【发布时间】:2016-09-20 08:36:44
【问题描述】:
我正在使用 Windows 中的_findfirst 函数打开文件,但我只想打开其他进程未打开的文件。情况是我将扫描一个目录读取文件并删除它们,而其他进程在其中创建新文件。
为了避免竞争条件,我发现了这个question,它提到了使用no sharing 选项打开文件的可能性。但是这是怎么做到的呢?
更新:我无法控制写入过程,所以不知道在创建文件时使用了哪些标志(如果不是)。此外,编写过程可能会改变(第三方软件)。
【问题讨论】:
-
打开文件进行写入并捕获异常
-
如果文件被另一个进程打开,那么
DeleteFile将简单地失败,它不应该导致竞争条件。除非其他进程正在创建带有FILE_SHARE_DELETE标志的文件(这不太可能)。您的问题中没有足够的信息... -
@BarmakShemirani,我更新了我的问题,还有需要/有用的信息吗?