用于在Linux中列出进程文件的程序

时间:2014-02-03 12:53:17

标签: linux unix process filesystems system

我需要一个程序来列出Linux中进程访问/打开的所有文件。 它应该像这样工作,

o / p:进程正在访问的文件的完整路径。

不想使用' lsof '实用程序或任何其他实用程序。

有没有以编程方式实现此目的?

1 个答案:

答案 0 :(得分:2)

如果您只想通过pid 1234进程通过打开文件描述符访问的文件,请列出/proc/1234/fd/目录(大多数条目是符号链接)。您还可以通过/proc/1234/fdinfo/

获取其他详细信息

尝试

ls -l /proc/self/fd/

了解这些文件包含的内容。

以编程方式,您可以在readdir(3)之后使用opendir(3)在这些目录上(以及readlink(2),至少对/proc/1234/fd/ ....中的条目)。另请参阅proc(5)

请注意/proc/是特定于Linux的。其他一些Unix拥有它(例如Solaris),具有非常不同的内容,属性和语义。

如果您还关心过去某些过程中已打开和关闭的文件,则要困难得多。另请参阅inotify(7)ptrace(2) ...

要将文件路径转换为“规范”绝对路径,请使用realpath(3)