gpt4 book ai didi

node.js - 检查文件是否在另一个进程中打开

转载 作者:搜寻专家 更新时间:2023-10-31 22:20:29 25 4
gpt4 key购买 nike

有什么方法可以打开具有非共享独占读写权限的文件吗?

来自 fs.watch 的文件更改事件并不一定意味着文件已完全写入,在大多数基于 Node 的进程的情况下,更多的 block 正在流下,或者它可能只是还没有被冲洗掉。

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

在 Windows 上,可以使用 C 中的 FILE_SHARE_NONE 执行 CreateFile,不太记得 Linux 上的等效项是什么(因为锁是建议性的,如果我没记错),不知道 OS X 是否有等效的 posix 或其他)。

最佳答案

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

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

它适用于 Windows、macOS 和 Linux,并且仅在 Linux 上需要权限。

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

在 macOS 和 Linux 上它包装 lsof .

与使用 flock 等替代方案相比,据我所知,flock 只是建议性的,因此只有在所有进程合作检查锁时它才会起作用,如果进程是独立的,大多数情况下情况并非如此。

关于node.js - 检查文件是否在另一个进程中打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31172728/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com