当我们知道在Linux上使用inotify尝试监视目录时,我们会在创建文件后立即收到通知(在其他进程完成写入之前)
是否有一种有效的方法可以确保在写入文件之前未被其他进程完成读取文件?
我们可能会添加延迟读取;但众所周知,这是有缺陷的。
为了更清晰一点的情景;这两个进程作为不同的用户运行;预期的负载大约是每秒创建几百个文件。
答案 0 :(得分:1)
在其他地方创建它,写入它,关闭它,然后重命名它 - 或者我错过了一些明显的东西?
答案 1 :(得分:1)
根据您的问题,听起来您正在使用IN_CREATE
(可能是IN_OPEN
)标记来监控目录。为什么不使用IN_CLOSE
标志,以便在文件关闭时收到通知?从那里开始,应该很容易跟踪某些文件是否打开,你知道你还不想尝试阅读它。
答案 2 :(得分:0)
您可以查看/proc/<pid>/fd
以查看该文件是否仍处于打开状态。如果没有在那里列出,您可以确定该过程不再使用它。
答案 3 :(得分:-1)