2011-01-31 92 views
2

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

+1

什么操作系统?什么操作系统分配静态进程ID可以引用(或者你是否使用某种进程冷冻机)? – 2011-01-31 08:12:40

回答

0

你在问什么是操作系统特定的任务,我很确定没有标准库存在。如果你幸运的话,可能会有第三方库为你做到这一点,但我不会屏住呼吸:)

如果你指定你想要做的操作系统和环境,机会会更好有人可能会为该平台提供详细的答复。

+0

抱歉没有指定平台。我的意思是在Ubuntu的Linux .. – nikhil 2011-01-31 11:19:14

2

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

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

也许如果你描述你正在尝试做的更完整的(在一个新问题中),我们将能够为你提供帮助。