检查一个文件是否在另一个进程中打开

有没有办法打开一个非共享独占读写访问的文件?

来自fs.watch文件更改事件并不一定意味着该文件已被完全写入,在大多数基于节点的进程中,更多的块正在流下,或者它可能还没有被刷新。

fs.open允许已打开并正在流式传输的文件在写入模式下无错误地打开。 可以引入超时延迟,但这太脆弱和任意。

在windows上,可以使用C语言中的FILE_SHARE_NONE执行CreateFile ,但不能完全记得Linux上的等价物(因为如果我没有记错的话,锁是建议的),不知道OS X是否有等价物,posix或除此以外)。


您可以使用@ ronomon / opened检查文件是否在另一个进程中打开,如果有任何应用程序具有打开的句柄或文件的文件描述符。

它不会告诉你哪个应用程序打开了该文件,只是该文件在其他应用程序中打开。

它适用于Windows,MacOS和Linux,并且只需要Linux上的权限。

它使用Windows上的本地绑定以独占共享模式打开文件,以检测由于打开句柄的其他进程而导致的任何共享冲突。

在macOS和Linux上,它包装了lsof

据我所知,与使用诸如flock的替代品相比, flock只是咨询性的,所以它只有在所有进程合作检查锁时才有效,如果进程是独立的,大多数情况并非如此。


请参阅fs-ext软件包中的flock函数。

链接地址: http://www.djcxy.com/p/86237.html

上一篇: Check if a file is open in another process

下一篇: Where does Visual Studio 2015 display error indicators in the solution?