歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Linux下文件屬性的獲取

Linux下文件屬性的獲取

日期:2017/3/1 10:25:35   编辑:Linux編程

1. 數據結構和系統調用

在Linux下進行C/C++編程,主要通過以下三個系統調用來獲取文件(普通文件,目錄,管道,socket,字符,塊等)屬性。

頭文件“#include <sys/stat.h>”

(1) //通過文件名稱獲取文件屬性

int stat(const char *restrict pathname, struct stat *restrict buf);

(2) //通過文件描述符獲取文件屬性

int fstat(int filedes, struct stat *buf);

(3) //通過符號文件名稱獲取文件屬性

int lstat(const char *restrict pathname, struct stat *restrict buf);

返回值(三個函數一樣)

成功:0

失敗:-1

三個系統調用的區別:

1. fstat接受的第一個參數是“文件描述符”,stat和lstat是“文件全路徑”,文件描述符需要用調用open之後才能得到,文件全路經直接寫即可;

2. lstat獲取的是該符號鏈接本身的信息;而stat獲取的是該鏈接指向的文件的信息;

這三個系統調用都依賴一個重要的結構體struct stat

  1. struct stat {
  2. mode_t st_mode; //文件對應的模式,文件,目錄等
  3. ino_t st_ino; //inode節點號
  4. dev_t st_dev; //設備號碼
  5. dev_t st_rdev; //特殊設備號碼
  6. nlink_t st_nlink; //文件的連接數
  7. uid_t st_uid; //文件所有者
  8. gid_t st_gid; //文件所有者對應的組
  9. off_t st_size; //普通文件,對應的文件字節數
  10. time_t st_atime; //文件最後被訪問的時間
  11. time_t st_mtime; //文件內容最後被修改的時間
  12. time_t st_ctime; //文件狀態改變時間
  13. blksize_t st_blksize; //文件內容對應的塊大小
  14. blkcnt_t st_blocks; //偉建內容對應的塊數量
  15. };
Copyright © Linux教程網 All Rights Reserved