#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int stat(const char *path,struct stat *buf);
功能:用來擷取檔案屬性
path:需要檔案路徑
buf:用于存放擷取的檔案屬性
傳回值:成功傳回0,失敗傳回-1
int fstat(int fd, struct stat *buf);
功能:根據檔案描述符擷取檔案屬性
fd:需要打開後的檔案描述符
buf:用于存放擷取的檔案屬性
傳回值:成功傳回0,失敗傳回-1
int lstat(const char *path, struct stat *buf);
功能:根據檔案路徑擷取檔案屬性
path:檔案路徑
buf:存放擷取的檔案屬性
傳回值:成功傳回0,失敗傳回-1
注意:stat/fstat會跟蹤連結目标,而lstat不跟蹤連結目标
struct stat
{
dev_t st_dev; //裝置id
ino_t st_ino; //節點号
mode_t st_mode; //檔案類型和權限
nlink_t st_nlink; //硬連結數
uid_t st_uid; //使用者id
gid_t st_gid; //組id
dev_t st_rdev; //特殊裝置id
off_t st_size; //檔案的總位元組數
blksize_t st_blksize; //IO塊數
blkcnt_t st_blocks; //占用塊(512位元組)數
time_t st_atime; //最後通路時間
time_t st_mtime; //最後修改時間
time_t st_ctime; //最後檔案屬性修改時間
};
根據檔案屬性中的st_mode,調用下列宏函數可判斷檔案類型
S_ISREG(m) //是否是标準檔案
S_ISDIR(m) //目錄
S_ISCHR(m) //字元裝置檔案
S_ISBLK(m) //塊裝置檔案
S_ISFIFO(m) //管道裝置檔案
S_ISLNK(m) //連結檔案
S_ISSOCK(m) //socket檔案