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