Winapi 正在等待关闭文件

Winapi 正在等待关闭文件,winapi,Winapi,我有以下情况: 进程A以独占方式打开文件F并使其保持打开状态 进程B尝试打开文件F,当然失败了 现在在进程B中,我想等待该文件,直到它可用,然后打开它。这可以通过一个繁忙的循环(尝试打开F直到成功)来完成,这是很难看的 我在进程B中实际需要的是一个OpenFileWait函数,它等待(超时),直到文件F可以打开,然后打开文件 Win32中是否有允许此类操作的API?据我所知,没有此类API。文件系统不提供像这样的同步原语。没有高级Win32 API来执行此操作,但有较低级别的方法来监视文件系

我有以下情况:

  • 进程A以独占方式打开文件F并使其保持打开状态
  • 进程B尝试打开文件F,当然失败了
现在在进程B中,我想等待该文件,直到它可用,然后打开它。这可以通过一个繁忙的循环(尝试打开F直到成功)来完成,这是很难看的

我在进程B中实际需要的是一个OpenFileWait函数,它等待(超时),直到文件F可以打开,然后打开文件


Win32中是否有允许此类操作的API?

据我所知,没有此类API。文件系统不提供像这样的同步原语。没有高级Win32 API来执行此操作,但有较低级别的方法来监视文件系统活动(如内核挂钩),包括检测打开的文件是否关闭,例如,能够为所有正在运行的进程记录
CloseFile
事件。这不是为了假装从头开始实现,但在技术上仍然是可行的。。。应用程序编程接口。如果仅为同步而打开文件,而不请求读或写访问,则可能会成功。然后你可以试着等待。。。在把手上,看看会发生什么;)@ddbug:不太可能工作;文件句柄实际上指的是文件内核对象(保存文件指针等),而不是底层文件。可以有两个句柄指向同一个文件但不同的内核对象。但这将是一个有趣的实验。