2014-02-14 255 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')。我相信這是出於安全原因而設計的。 –