Linux 檔案操作可用系統呼叫 (open/read/write/close) 或C 標準函式庫 (fopen/fread/fwrite/fclose),兩者差異在於層級、緩衝、可移植性與效能。
<unistd.h>, <fcntl.h>open, close, read, write, lseek, ioctlint)。預設 0/1/2 為 stdin/stdout/stderr。<stdio.h>fopen, fclose, fread, fwrite, fseek, fflush, fprintfFILE*),內含 fd 與用戶空間緩衝區。| 項目 | 系統呼叫 | 函式庫呼叫 |
|---|---|---|
| 標準化 | POSIX / OS 特有 | ANSI C (ISO C) |
| 緩衝 | 無 (直接 I/O) | 雙層緩衝 (用戶 + 核心) |
| 切換開銷 | 每次呼叫皆切換 | 批次減少切換 |
| 適用層級 | 核心/驅動/底層 | 應用程式/一般開發 |
| 錯誤回傳 | -1 + errno | NULL/EOF + errno |
fwrite 因緩衝優於 write 數十倍。write 可配合 O_DIRECT 繞過頁面快取。fsync/fflush 強制刷新,兩者皆適用。fopen/fread/fwrite,可移植且效能佳。理解兩者關係,才能在效能調校與架構選型時做出正確決策。