2014-02-14 210 views
0

我正在开发一个用于linux的C应用程序,我需要使用进程ID打开文件列表。我遍历文件描述符的/proc/pid/fd目录。但是我怎么能从文件描述符中知道文件路径和文件名呢?或者我应该使用其他方法还是api函数?如何从文件描述符获取文件名和路径?

谢谢,

回答

1

manual描述/proc/pid/fd/为:

这是包含每个文件 该过程具有开放的,由它的文件描述符命名一个条目,并且 子目录这是一个符号链接到实际文件。

因此,您可以在每个条目上调用stat并检索有关该文件的元数据。

+0

如果您需要关于链接的信息,您需要lstat,而不是stat。 – user3303729

+0

'touch foo;'[process foo]; 'ln foo bar'; ['foo'和'bar'现在指向相同的文件内容]; 'rm foo'; [/ proc/pid/fd/XX符号链接现在已经死了,尽管文件本身仍然可以作为'bar'访问; – ArtemB

+0

@ArtemB:没错,你不能从拥有它的进程外部访问那些“行尸走肉”的文件(想象你甚至没有'bar')。我相信这是出于安全原因而设计的。 –