歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

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