【问题标题】:Program to list files of a process in Linux列出Linux中进程文件的程序
【发布时间】:2014-02-26 23:23:03
【问题描述】:

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

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

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

有没有办法以编程方式实现这一点?

【问题讨论】:

    标签: linux unix process filesystems system


    【解决方案1】:

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

    试试

    ls -l /proc/self/fd/
    

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

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

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

    如果您还关心过去通过某个进程打开和关闭的文件,那就更难了。另见inotify(7)ptrace(2)...

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

    【讨论】:

    • 它有效。谢谢我会用这个想法写一个prg。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 2010-10-30
    • 1970-01-01
    • 2014-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多