stat、fstat和lstat函數(UNIX) #include #include int stat(const char *restrict pathname, struct stat *restrict buf); 供給文件姓名,獲取文件對應特色。感覺一般是文件沒有翻開的時分這樣操做。 int fstat(int filedes, struc http://www.goodk123.info/linked/20130312.do t stat *buf); 通過文件描繪符獲取文件對應的特色。文件翻開後這樣操做 int lstat(const char *restrict pathname, struct stat *restrict buf); 銜接文件 三個函數的回來:若成功則爲0,若犯錯則爲-1 給定一個pathname,stat函數回來一個與此命名文件有關的信息佈局,fstat函數取得已在描繪符filedes上翻開的文件的有關信息。lstat函數相似於stat,但是當命名的文件是一個符號銜接時,lstat回來該符號銜接的有關信息,而不是由該符號銜接引證的文件的信息。 第二個參數是個指針,它指向一個我們應供給的佈局。這些函數填寫由buf指向的佈局。該佈局的實踐界說可以隨完成而有所不一樣,但其基本形式是: 函數都是獲取文件(通常文件,目錄,管道,socket,字符,塊()的特色。 函數原型 #include int stat(const char *restrict pathname, struct stat *restrict buf); 供給文件姓名,獲取文件對應特色。 int fstat(int filedes, struct stat *buf); 通過文件描繪符獲取文件對應的特色。 int lstat(const char *restrict pathname, struct stat *restrict buf); 銜接文件描繪命,獲取文件特色。 2 文件對應的特色 struct stat { mode_t st_mode; //文件對應的形式,文件,目錄等 ino_t st_ino; //inode節點號 dev_t st_dev; //設備號碼 dev_t st_rdev; //特別設備號碼 nlink_t st_nlink; //文件的銜接數 uid_t st_uid; //文件全部者 gid_t st_gid; //文件全部者對應的組 off_t st_size; //通常文件,對應的文件字節數 time_t st_atime; //文件最終被拜訪的時刻 time_t st_mtime; //文件內容最終被修正的時刻 time_t st_ctime; //文件情況改動時刻 blksize_t st_blksize; //文件內容對應的塊鉅細 blkcnt_t st_blocks; //偉建內容對應的塊數量 }; 可以通過上面供給的函數,回來一個佈局體,保存着文件的信息。 stat函數解說 表頭文件: #include #include 界說函數: int stat(const char *file_name, struct stat *buf); 函數闡明: 通過文件名filename獲取文件信息,並保存在buf所指的佈局體stat中 回來值: 履行成功則回來0,失利回來-1,錯誤代碼存於errno 錯誤代碼: ENOENT 參數file_name指定的文件不存在 ENOTDIR 途徑中的目錄存在但卻非真實的目錄 ELOOP 欲翻開的文件有過多符號銜接疑問,上限爲16符號銜接 EFAULT 參數buf爲無效指針,指向沒法存在的內存空間 EACCESS 存取文件時被回絕 ENOMEM 中心內存不足 ENAMETOOLONG 參數file_name的途徑稱號太長 #include #include #include int main() { struct stat buf; stat("/etc/hosts", http://www.haofapiao.com/linked/20130312.do