有没有办法打开具有非共享独占读写访问权限的文件?
文件更改事件fs.watch并不一定意味着文件已完全写入.在大多数基于节点的进程的情况下,更多的块正在流中,或者它可能还没有被刷新.
fs.open在写入模式下,允许打开已打开并正在流式传输的文件,而不会出现错误.人们可能会引入超时延迟,但这太过于脆弱和随意.
在Windows上,一个人可以CreateFile用FILE_SHARE_NONEC 来做,不能完全回想起Linux上的等价物(因为如果我没记错的话,锁就是建议的),不知道OS X是否有等价的,posix或其他) .
您可以使用@ronomon/opened检查文件是否在另一个进程中打开,是否有任何应用程序打开了该文件的句柄或文件描述符。
它不会告诉您哪些应用程序打开了该文件,只是告诉您该文件已在其他应用程序中打开。
它适用于 Windows、macOS 和 Linux,并且仅需要 Linux 上的权限。
它使用 Windows 上的本机绑定以独占共享模式打开文件,以检测由于其他进程打开句柄而导致的任何共享冲突。
在 macOS 和 Linux 上,它包装lsof。
与使用诸如foll之类的替代方案相比,据我了解,flock它只是建议性的,因此只有在所有进程合作检查锁的情况下它才会起作用,而如果进程是独立的,则大多数情况下情况并非如此。
| 归档时间: |
|
| 查看次数: |
2974 次 |
| 最近记录: |