跟踪文件访问

时间:2011-01-31 07:00:50

标签: c linux

我有一个文件,我想跟踪正在访问文件的所有进程的pid。 C / c ++中是否有任何可用的功能来执行此操作。我还想仅在进程的pid位于预定义的pid列表中时才授予对文件的访问权。

2 个答案:

答案 0 :(得分:2)

在Linux上,您可以通过在readlink()内的链接上调用/proc/<pid>/fd/来查找流程打开的文件。要查找打开给定文件的所有进程,您可以遍历PID中的每个/proc,查找相关文件。请注意,除非您是root用户,否则您通常无法看到其他用户拥有的进程打开的文件。

无法限制对特定PID的访问 - PID在启动时分配给进程,并在进程退出后重新用于其他进程。文件权限基于进程的UID,GID和补充GID,而不是基于PID。

也许如果你描述一下你想要做的更充分(在一个新问题中),我们将能够帮助你。

答案 1 :(得分:0)

您要问的是操作系统特定任务,我确信不存在标准库。如果你很幸运,可能会有第三方图书馆为你做这件事,但我不会屏住呼吸:)

如果您指定要执行此操作的操作系统和环境,则可能有人能够为该平台做出详细回复。