跳至內容
主選單
主選單
移至側邊欄
隱藏
導覽
首頁
近期變更
隨機頁面
MediaWiki說明
Taiwan Tongues 台語維基
搜尋
搜尋
外觀
建立帳號
登入
個人工具
建立帳號
登入
檢視 檔案描述子 的原始碼
頁面
討論
臺灣正體
閱讀
檢視原始碼
檢視歷史
工具
工具
移至側邊欄
隱藏
操作
閱讀
檢視原始碼
檢視歷史
一般
連結至此的頁面
相關變更
特殊頁面
頁面資訊
外觀
移至側邊欄
隱藏
←
檔案描述子
由於以下原因,您無權編輯此頁面:
您請求的操作只有這些群組的使用者能使用:
使用者
、taigi-reviewer、apibot
您可以檢視並複製此頁面的原始碼。
'''檔案描述子'''(File descriptor)是電腦科學中的一个術語,是一个用於表述指向檔案的參照的抽象化概念。 ==概欲== 檔案描述子佇形式上是一个非負整數。實際上,伊是一个索引值,指向核心為每一个行程所維護的該行程拍開檔案的記錄表。當程式拍開一个現有檔案或者建立一个新檔案的時陣,核心向行程傳回一个檔案描述子。佇咧程式設計內底,一寡牽涉著底層的程式來編寫往往會圍踅檔案描述子展開。但是檔案咧講這一概念往往干焦適用佇咧 UNIX、Linux 這款的作業系統。 彼每一个 Unix 行程(除了可能較捷駐程式)應該攏有三个標準的 POSIX 檔案描述子,對應三个標準流: ===優點=== 檔案描述子的優點主要有兩个: * 是因為檔案描述子的 I / O 操作相容 POSIX 標準。 * 佇咧 UNIX、Linux 的系統呼叫中,大量的系統呼叫攏是依賴伊的檔案來講。 比如講,下跤的程式碼就示範矣如何是因為檔案來講子來讀當前 kha-tá-lok-guh 後的一个指定檔案,並共檔 àn-nāi 容列印到主控台。 此外,佇咧 Linux 系列的作業系統上,因為 Linux 的設計思想就是共一切裝置攏視作檔案。所以,檔案描述子的存在提供了程式操作裝置的統一方法。 ===缺點=== 檔案描述子的概念存在兩大缺點: * 在非 UNIX / Linux 作業系統上(如 Windows), 無法度因為這一概念進行程式的設計—— 事實上,Windows 後的檔案描述子佮號誌、互斥鎖等核心物件仝款攏記做 HANDLE。 * 因為檔案描述子咧形式毋過是一个整數,做程式碼量增加大時,會使程式的設計者誠歹分清佗一寡整數意味著資料,佗一寡意味出檔案來講。所以,完成的程式碼會當讀性也就會變甲真䆀,這點一般透過使用名稱有文字意義的魔術數字來進行替換來解決。 ===其他=== * 對於 ANSI C 規範當中定義的標準庫的檔案 I / O 操作。ANSI C 規範迵過出一个解決方法,就是使用 FILE 結構體的指標。事實上,UNIX / Linux 平台頂的 FILE 結構體的實作中往往攏是封囥檔案描述子變數佇咧其中。 * 佇咧 UNIX / Linux 平台頂,對主控台(Console)的標準輸入,標準輸出,標準錯誤輸出嘛對應三个檔案描述子。𪜶分別是零 , 一 , 二。佇實際程式設計當中,若欲操作這三个檔案咧講,建議使用 < unistd . h > 標頭檔中定義的三个巨集來表示:STDIN \ _ FILENO , STDOUT \ _ FILENO 以及 STDERR \ _ FILENO . * 對一个行程來講,檔案描述子的變化範圍做零 ~ OPEN \ _ MAX . ==佮檔案描述子相關的操作== ===檔案描述子的生成=== * open ( ) , open 六十四 ( ) , creat ( ) , creat 六十四 ( ) * socket ( ) * socketpair ( ) * pipe ( ) ===佮單一檔案來講出手的操作=== * read ( ) , write ( ) * recv ( ) , send ( ) * recvmsg ( ) , sendmsg ( ) * sendfile ( ) * lseek ( ) , lseek 六十四 ( ) * fstat ( ) , fstat 六十四 ( ) * fchmod ( ) * fchown ( ) ===佮複數檔案描述子相關的操作=== * select ( ) , pselect ( ) * poll ( ) , epoll ( ) ===佮檔案來講表示相關的操作=== * close ( ) * dup ( ) * dup 二 ( ) * fcntl ( F \ _ DUPFD ) * fcntl ( F \ _ GETFD and F \ _ SETFD ) ===改變行程狀態的操作=== * fchdir ( ) * mmap ( ) ===佮檔案加鎖的操作=== * flock ( ) * fcntl ( F \ _ GETLK , F \ _ SETLK and F \ _ SETLKW ) * lockf ( ) ===佮通訊端相關的操作=== * connect ( ) * bind ( ) * listen ( ) * accept ( ) * getsockname ( ) * getpeername ( ) * getsockopt ( ) , setsockopt ( ) * shutdown ( ) ===其他=== * ioctl ( ) ==注釋== ==參考文獻== [[分類: 待校正]]
返回到「
檔案描述子
」。