#include <sys/stat.h>分析文件

stat函數(shù)可以返回一個(gè)結(jié)構(gòu),里面包括文件的全部屬性

#include<sys/stat.h>
int stat(const char *restrict pathname,struct stat *restrict buf);
int fstat(int fields,struct stat *buf);
int lstat(const char *restrict pathname,struct stat *restrict buf);

返回值:若成功則返回0,失敗則返回-1

struct stat { 
     dev_t st_dev; // 文件所在設(shè)備ID 
     ino_t st_ino; // 結(jié)點(diǎn)(inode)編號(hào)  
     mode_t st_mode; // 保護(hù)模式 
     nlink_t st_nlink; // 硬鏈接個(gè)數(shù)  
     uid_t st_uid; // 所有者用戶ID  
     gid_t st_gid; // 所有者組ID  
     dev_t st_rdev; // 設(shè)備ID(如果是特殊文件) 
     off_t ** st_size;** // 總體尺寸,以字節(jié)為單位 
     blksize_t st_blksize; // 文件系統(tǒng) I/O 塊大小
     blkcnt_t st_blocks; // 已分配 512B 塊個(gè)數(shù)
     time_t st_atime; // 上次訪問時(shí)間 
     time_t st_mtime; // 上次更新時(shí)間 
     time_t st_ctime; // 上次狀態(tài)更改時(shí)間 
};
  • st_dev字段描述該文件所在的設(shè)備。(major() 和minor()宏可能在分析這個(gè)設(shè)備ID域時(shí)有用。)
  • st_rdev 字段描述這個(gè)文件(inode)本身代表的設(shè)備。
  • st_size字段 給出文件字節(jié)尺寸(**如果它是一個(gè)普通文件或符號(hào)鏈接)。對(duì)于符號(hào)鏈接而言是它所有包含路徑名長度,不包括結(jié)尾的空字符。
  • st_blocks 字段指明文件已經(jīng)分配數(shù)據(jù)塊的個(gè)數(shù),數(shù)據(jù)塊以 512 字節(jié)為單位。(這可能小于st_size/512,當(dāng)文件有空洞時(shí)。)
  • st_blksize 給出對(duì)于高效文件系統(tǒng) I/O 操作的優(yōu)先塊尺寸。(數(shù)據(jù)以小尺寸塊寫入文件時(shí)可能導(dǎo)致低效的讀-更改-覆蓋 操作。)
    不是所有的 Linux 文件系統(tǒng)實(shí)現(xiàn)了所有的時(shí)間域。
  • st_atime字段在文件訪問時(shí)更改,比如,execve()、mknod()、pipe()、utime() 和read()(多于零個(gè)字節(jié))。一些文件系統(tǒng)允許掛載時(shí)不去訪問文件或目錄且不會(huì)導(dǎo)致 st_atime 字段更新。(參考 mount() 的noatime、nodiratimerelatime,以及mount() 中相關(guān)的信息。)此外,如果文件以O(shè)_NOATIME 標(biāo)志打開,st_atime 不會(huì)被更新。
  • st_mtime在文件更改時(shí)更新,比如,mknod()、truncate()、utime() 和write()(多于零個(gè)字節(jié))。再者,一個(gè)目錄的st_mtime在這個(gè)目錄里創(chuàng)建或刪除文件時(shí)更新。st_mtime 在更改所有者、組、硬鏈接個(gè)數(shù)或權(quán)限模式時(shí) 不會(huì)更新。
  • st_ctime 字段在寫入或設(shè)置結(jié)點(diǎn)(inode)信息(如所有者、組、鏈接數(shù)、權(quán)限等等)時(shí)會(huì)更改。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容