应用程序能够通过调用 stat 和 fstat 函数,检索到关于文件的信息(有时也称为文件的元数据(metadata))。
#include<unistd.h>#include<sys/stat.h>intstat(constchar*filename,struct stat *buf);intfstat(int fd,struct stat *buf);// 返回:若成功则为 0,若出错则为 -1。
stat 函数以一个文件名作为输入,并填写如图 10-9 所示的一个 stat 数据结构中的各个成员。fstat 函数是相似的,只不过是以文件描述符而不是文件名作为输入。当我们在 11.5 节中讨论 Web 服务器时,会需要 stat 数据结构中的 st_mode 和 st_size 成员,其他成员则不在我们的讨论之列。
/* Metadata returned by the stat and fstat functions */struct stat {dev_t st_dev; /* Device */ino_t st_ino; /* inode */mode_t st_mode; /* Protection and file type */nlink_t st_nlink; /* Number of hard links */uid_t st_uid; /* User ID of owner */gid_t st_gid; /* Group ID of owner */dev_t st_rdev; /* Device type (if inode device) */off_t st_size; /* Total size, in bytes */unsignedlong st_blksize; /* Block size for filesystem I/O */unsignedlong st_blocks; /* Number of blocks allocated */time_t st_atime; /* Time of last access */time_t st_mtime; /* Time of last modification */time_t st_ctime; /* Time of last change */};