Linux 遵循「一切皆檔案」哲學,進程存取檔案、裝置、Socket、管道皆透過檔案描述符(File Descriptor, FD)完成。
open() 系統呼叫,從用戶空間進入核心。struct file 結構(含讀寫位移、磁碟位置等),放入進程 PCB 的檔案描述符表,索引值即為 FD。read()/write()/close() 皆以此 FD 為參數操作。| FD | 名稱 | 裝置 | 巨集 |
|---|---|---|---|
| 0 | 標準輸入 (stdin) | 鍵盤 | STDIN_FILENO |
| 1 | 標準輸出 (stdout) | 螢幕 | STDOUT_FILENO |
| 2 | 標準錯誤 (stderr) | 螢幕 | STDERR_FILENO |
printf/scanf 等標準庫函數最終皆透過這三個 FD 與終端互動。理解 FD 機制是掌握 Linux I/O 重導向、多工、網路程式設計的基石。