首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Linux 檔案系統核心:目錄結構、inode 與 stat 結構體詳解

     編輯:關於C語言

檔案相關三大資訊

  1. 目錄結構:目錄項包含檔名與 inode 號,透過檔名定位 inode
  2. 索引節點:儲存檔案元資料(權限、擁有者、時間戳、資料區塊指標等)
  3. 資料區塊:實際檔案內容儲存位置,由 inode 指向

stat 結構體定義

struct stat {
    dev_t     st_dev;      // 檔案系統裝置號
    ino_t     st_ino;      // inode 號
    mode_t    st_mode;     // 檔案型別與權限
    nlink_t   st_nlink;    // 硬連結數
    uid_t     st_uid;      // 擁有者 UID
    gid_t     st_gid;      // 群組 GID
    dev_t     st_rdev;     // 裝置檔案的裝置號
    off_t     st_size;     // 檔案大小 (bytes)
    blksize_t st_blksize;  // 最佳 I/O 區塊大小
    blkcnt_t  st_blocks;   // 配置區塊數
    time_t    st_atime;    // 最後存取時間
    time_t    st_mtime;    // 最後修改時間
    time_t    st_ctime;    // 最後狀態改變時間
};

st_dev vs st_rdev 差異

  • st_dev:包含此檔案的檔案系統裝置號(所有檔案皆有)
  • st_rdev:僅字元/區塊裝置檔案有效,代表實際硬體裝置號

系統呼叫取得 stat

struct stat sb;
stat("filename", &sb);      // 依路徑
fstat(fd, &sb);             // 依檔案描述符
lstat("link", &sb);         // 不追蹤符號連結

透過 stat 族函數可程式化存取 inode 資訊,是系統管理工具開發基礎。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved