如何检测当前是否在linux上的文件上完成了文件操作

时间:2011-04-12 07:45:59

标签: linux

如何通过使用c或c ++检测文件是否已打开并且Linux上的另一个进程正在对其执行文件操作?我知道lsof会列出所有打开的文件,但我不知道它是如何得到这些信息的。

THX

3 个答案:

答案 0 :(得分:3)

我不确定lsof实际上是这样工作的,但实现它的方法可能就是这样:

  • 通过查看/proc/$PID/fd/个文件,让您的流程“打开文件。

  • 查看任何其他进程“/proc/$PID/fd/,以查看谁在阅读您的相同文件。

答案 1 :(得分:2)

为什么不查看lsof源代码?这可能有点令人生畏,但我相信你可以隔离两三个有趣的系统调用,为它提供所有相关信息。

答案 2 :(得分:1)

lsof遍历所有/proc/*/fd/*如果您执行strace命令的lsof,则可以看到这一点。