2016-03-20 39 views
0

維基說,是文件描述符表自我維護每個進程

在傳統實施的Unix,文件描述符索引到每個進程的文件描述符表由內核維護,這反過來指標進入由所有進程打開的系統範圍的文件表,稱爲文件表。

,當你做一個開放的系統調用,或者更確切地說,在每個進程的內核是否只返回一個FD 它也創造像FD表被叫過程?

在系統範圍內的fd獨特之處?我真的很好奇,當我們打開或寫入文件時會發生什麼?

+0

Linux是開源的。去看看。 –

+1

我不明白這個問題。 – user3344003

回答

0

要理解這一點,你可以這樣想,當你打開的任何文件,管道或設備文件,它們都與它相關聯的不同的驅動程序,所以要知道在使用讀取使用的驅動程序,寫等lseek的和鏈接索引節點來更新上次訪問或鎖定的文件,內核創建與每一個文件相關聯的數據結構。

以及其他後臺進程可能正在運行,所以管理這些文件,內核創建這些數據結構的表,並在其表中返回的數據結構行的索引號。我們稱之爲文件描述符。

所以根據你的提問,每次我們調用open時都會創建單行,它可以是單個進程中的多個時間,也可以是不同的進程,總是返回的FD與內核中一行中的一行相關聯總是不同的。