1. 程式人生 > >理解Unix/Linux系統中的檔案描述符

理解Unix/Linux系統中的檔案描述符

簡介

檔案描述符是針對Unix/Linux的每個程序而言的,每個程序都維護了一個檔案指標表,指標指向作業系統的檔案。這裡的檔案是指的Unix/Linux系統所說的檔案,Unix/Linux下一切皆檔案。檔案描述符相當於一個檔案指標表的下標,程序通過下標指標進行間接定址,從而在作業系統的核心中尋找自己的資源。對於任意程序,預設的檔案0、1、2分別表示標準輸入、標準輸出、標準錯誤。

因此,對於程序來說,拿到一個檔案描述符,就對應於一個檔案指標表的下表,進而對應檔案表的指標,程序通過該指標,其訪問指標指向的作業系統對應的實際的檔案資源。在程序分配檔案描述符的時候,程序會把檔案指標表中沒有利用的最小下標進行分配。

理解檔案描述符,是Unix/Linux環境程式設計的基礎,更加詳細的描述,可以參考dalao的部落格: https://www.jianshu.com/p/cded914786d5

檔案描述符集合

fd_set是一個位元位組成的陣列結構體,每一個位元位是0/1,總數是1024,主要用於select模式。陣列下標表示當前程序的檔案描述符。作業系統核心通過修改位元位,來說明當前檔案是否可用。

具體參考:https://linux.die.net/man/3/fd_set