一般來講,使用與管理檔案是通過檔名來進行的,但從應用程式設計的角度看,檔案描述符更有用,而系統中的檔案在本質上是通過
其索引節點進行管理的。
檔案描述符是應用程式中表示被開啟的檔案的乙個整數,其他對檔案的操作介面都要使用這個整數來指定所操作的檔案。
從系統的角度來看,檔案的索引節點(inode)是檔案的唯一標識。乙個檔案的inode包含檔案系統處理檔案所需要的全部資訊,如
訪問許可權、當前大小等。詳細來說,實際上存在兩種型別的inode:乙個是所謂的核心inode(in-core inode),儲存在記憶體中,在系統中
每個開啟的檔案都對應著乙個核心inode;另乙個是磁碟inode(on-disk inode),在檔案系統中的每乙個檔案都有乙個磁碟inode,儲存在
磁碟上,它所儲存的具體資訊與檔案系統的型別有關。當程序開啟乙個檔案時,檔案的磁碟inode中的資訊就會被載入記憶體,並建立乙個內
核inode。當核心inode被修改後,系統負責將其同步到磁碟上。磁碟inode與對應的核心inode所儲存的資訊並不是完成相同的。核心inode
記錄的是關於檔案的更通用的一些資訊,而忽略掉與具體檔案系統型別相關的一些資訊。
一般而言,乙個inode應當記錄如下資訊:
* 檔案型別
* 與檔案相關的硬鏈結的個數
* 以位元組為單位的檔案的長度
* 裝置識別符號
* 在檔案系統中標識檔案的索引號
* 檔案所屬使用者的uid(user id,使用者識別符號)
* 檔案所屬組的gid(group id,組識別符號)
* 各種時間戳,包括檔案狀態的改變時間、檔案的最後訪問時間和最後修改時間
linux中檔案描述符
在linux系統中,所有東西都可以看成是檔案,檔案又可以分為普通檔案,目錄檔案,鏈結檔案和裝置檔案。檔案描述符是核心為了高效管理已被開啟的檔案所建立的索引,是乙個非負整數用於指代被開啟的檔案,所有執行i o操作的系統呼叫都是通過檔案描述符。程式剛剛啟動的時候,0是標準輸入,1是標準輸出,2是錯誤輸出...
linux檔案描述符
本文介紹了檔案描述符,1 首先說什麼是檔案描述符,它有什麼作用?檔案描述符是乙個簡單的整數,用以標明每乙個被程序所開啟的檔案和socket。基於檔案描述符的輸入輸出函式 open 開啟乙個檔案,並指定訪問該檔案的方式,呼叫成功後返回乙個檔案描述符。creat 開啟乙個檔案,如果該檔案不存在,則建立它...
linux檔案描述符
當某個程式開啟檔案時,作業系統返回相應的檔案描述符,程式為了處理該檔案必須引用此描述符。所謂的檔案描述符是乙個低階的正整數。最前面的三個檔案描述符 0,1,2 分別與標準輸入 stdin 標準輸出 stdout 和標準錯誤 stderr 對應。因此,函式 scanf 使用 stdin,而函式 pri...