2015-09-28 189 views
0

文件描述符是針對進程還是針對操作系統?我基本上想知道的是,如果在ac程序中我打開一個文件,並且該文件被分配了一個文件描述符值,例如103,那麼當我在其他c程序中用文件描述符103打開一個文件時,我會指的是相同的文件或其他?文件描述符和進程關係

+0

文件描述符是特定於進程的。 –

+0

如果我從打開該文件的過程中分離出一個新進程,該怎麼辦? – Utkarsh

+2

每個進程的文件描述符都是* still *,而fork發生的複製只是使*看起來*好像不是。 –

回答

1

每個進程將擁有自己的文件描述符表。它的處理器特定,如果更改fd它將只對該進程有效,它不會影響系統中的其他進程。一旦進程終止fd將被丟棄。

如果我從過程中分叉了一個新過程,我打開該文件該怎麼辦?

當前文件描述表,即fork系統調用之前的表將被繼承到子進程。

0

文件描述符是通過open()創建的特定進程。但是您可以使用open()通過其他進程多次打開相同的文件。通過這種方式,每個進程都將擁有自己的文件描述符用於同一個文件。文件描述符和其他資源一起通過fork傳遞給子進程。這意味着子進程不需要重新打開已經打開的父進程的相同文件。