2017-05-07 19 views
0

我寫在C小貝殼在Linux上運行之後。因爲有很多參與了DUP,我想問一下,如果有一種方法來打印裏面是什麼位置0。例如,如果我叫DUP2(FILE_NAME,0)是有沒有辦法打印FILE_NAME所以我可以使用它進行調試?ç打印哪些文件是在默認的標準輸入使用DUP2

回答

1

你不能從DUP2的文件名。正如你可以閱讀here它只返回一個int值:

int dup2(int fildes, int fildes2); 

什麼,你可以在Linux中做的是:

您可以在/ proc中使用readlink /自/ FD/NNN其中NNN是文件 描述符。當它 打開[here]

或者一些更有創意的是創造一個struct在那裏你可以assosiate的fildesfilename這會給你的文件的名字,因爲它是。

事情是這樣的:

struct Files{ 
    int fildes; 
    char filename[50]; 
} files; 

如果您有更多然後一個剛剛創建一個數組,並把你需要每次一個;通過這種方式,您可以隨時將其映射到filename

+0

注意的Unix並不是所有版本都支持了'/ proc'文件系統。 –

+0

@JonathanLeffler但這個答案是Linux特有。 OP要求linux。你認爲我應該在任何情況下寫一張便條嗎? – granmirupa

+0

我錯過了提到Linux的問題,即使它不在標籤中。那麼你很好。 –

1

如果您使用的是Linux操作系統,可以顯示你的文件描述表容易 在Linux上存儲的進程的ID的/ proc /目錄下,過程 例如FD的文件夾中顯示文件描述表中的每個進程

ls -l /proc/1405/fd 

outputlooks like this image

相關問題