文件本質
Linux 文件 = 有名字的字符流集合,**內部無結構**,字符間關系由應用程序賦予。
五大文件類型
| 類型 | 說明 | 細分 |
| 普通文件 | 最常見,無文件系統結構信息 | 文本文件(行結構 ASCII)、二進制文件(內存映像) |
| 目錄文件 | 存放文件名及元信息,文件系統基本節點 | 可包含子目錄/普通文件。注意:Linux 目錄**是一種文件** |
| 鏈接文件 | 指向真實文件的引用 | 硬鏈接(同 inode)、符號鏈接(路徑引用) |
| 設備文件 | 訪問硬件的標準接口,通常在 /dev | 塊設備(固定塊訪問,如磁盤)、字符設備(字節流訪問,如終端) |
| 管道文件 | 進程間通信通道,先進先出,常駐高速緩存 | 有名管道(FIFO,文件系統可見)、無名管道(親緣進程間) |
特殊設備文件:/dev/null
寫入其中的數據直接丟棄,相當於「黑洞」刪除操作。
文件權限模型
- 三類權限:讀
r、寫 w、執行 x
- 三類用戶:所有者、同組用戶、其他用戶
- root 用戶擁有所有文件的完整權限
權限表示示例
-rw-r--r-- 1 user group 1024 Jan 1 10:00 file.txt
│││││││││
││││││└─ 其他:讀
│││││└──── 其他:寫(無)
││││└───── 其他:執行(無)
│││├────── 組:讀
││└─────── 組:寫(無)
├───────── 主:讀
└──────── 主:寫
(首字符 - 表示普通文件,d=目錄,l=鏈接,b=塊設備,c=字符設備,p=管道)
核心洞察
- 「一切皆文件」:設備、管道、Socket 均以文件形式抽象,統一 I/O 接口
- 目錄是文件:
ls -ld 可見目錄屬性
- 硬鏈接共享 inode,刪除源文件數據不丟失;符號鏈接跨文件系統,源刪除則失效
- 權限檢查順序:所有者 → 組 → 其他,首匹配生效
- 上一篇文章: Linux C 編程實戰:消息隊列完整示例代碼與運行效果演示
- 下一篇文章: Linux C 進程等待機制全解析:wait/waitpid/waitid 語義差異、僵屍進程與信號交互
Copyright ©
程式碼之家 All Rights Reserved