Terminology

文件描述符的所指對像是什麼?

  • May 14, 2011

我的理解是文件描述符是一個整數,它是核心每個程序映射到open()ed 文件、管道、套接字等對象的關鍵。

“open files/sockets/pipes/…”是否有適當的、簡短的和特定的名稱,文件描述符的引用?

稱它們為“文件”會導致與儲存在文件系統中的未打開文件混淆。簡單地引用文件描述符並不能充分描述語義(例如,在程序之間複製整數是沒有用的)。

查閱The Open Group Base Specifications和我自己系統的聯機幫助頁讓我得出結論,文件描述符的所指對像是一個對象,當它特別是一個打開的文件時,它就是一個打開的文件。有比object更具體的術語嗎?

實際上沒有更具體的術語。在傳統的 Unix 中,文件描述符引用文件表中的條目,其中的條目稱為文件,有時也稱為打開文件。這是在特定的上下文中,因此雖然術語文件顯然是非常通用的,但在文件表的上下文中,它專門指的是打開的文件。

磁碟上的文件通常稱為inode,儘管從技術上講,inode 是文件的元數據部分。然而,由於 inode 和數據塊之間的關係是一對一的,所以引用一個 inode 隱含地指的是它指向的數據。更現代的文件系統可能支持諸如可共享數據塊的寫時複製等功能,因此這並非普遍適用,但適用於傳統 Unix。但是,考慮到文件系統一詞,將其內容視為文件是不小的飛躍

當打開磁碟上的文件並在inode 表中維護時,inode也會作為核心 inode讀入記憶體,但這比您所要求的要更進一步。

這會導致術語衝突:磁碟上的文件(由 inode 引用)和打開的文件(由文件表中的條目引用)。

我建議“打開文件”或“文件表條目”都是對您要描述的內容的充分描述。

我找到的一個相當簡潔的參考資料位於:http ://www.hicom.net/~shchuang/Unix/unix4.html 。(Bach nn ) 形式的引用是對Maurice J. Bach所著的 The Design Of The Unix Operating System一書的引用。

引用自:https://unix.stackexchange.com/questions/11373