如何通过使用c或c ++检测文件是否已打开并且Linux上的另一个进程正在对其执行文件操作?我知道lsof会列出所有打开的文件,但我不知道它是如何得到这些信息的。
THX
答案 0 :(得分:3)
我不确定lsof
实际上是这样工作的,但实现它的方法可能就是这样:
通过查看/proc/$PID/fd/
个文件,让您的流程“打开文件。
查看任何其他进程“/proc/$PID/fd/
,以查看谁在阅读您的相同文件。
答案 1 :(得分:2)
为什么不查看lsof源代码?这可能有点令人生畏,但我相信你可以隔离两三个有趣的系统调用,为它提供所有相关信息。
答案 2 :(得分:1)
lsof
遍历所有/proc/*/fd/*
如果您执行strace
命令的lsof
,则可以看到这一点。