现在一个进程独占打开一个文件,但是操作后马上delete掉。一旦打开,就直至删除其他的进程都不能访问。单单用createfile独占打开的话,必须closehandle之后才能deletefile,在closehandle和deletefile之前还是有可能被访问吧?请各位大侠指点

解决方案 »

  1.   

    独占方式打开,设置共享方式dwShareMode为0,其他程序无法打开。
      

  2.   

    但是我closehandle之后,这个设置还会有作用吗?我closehandle后,还是可能有其它进程在deletefile之前访问它吧?最好有什么办法能在closehandle之前就改变这个文件的属性
      

  3.   

    只要能不读就行,不知道window有没有linux下那种fcntl函数可以改变已打开文件的属性
      

  4.   

    使用FILE_FLAG_DELETE_ON_CLOSE,关闭句柄后系统自动删除文件。HANDLE hFile = CreateFile(_T("YourFile.test"), 0, 0, OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, NULL);
    if (hFile) CloseHandle(hFile);// 自动删除