stat/fstat/lstat
#include <sys/stat.h>
功能:用来获取文件属性,返回值:成功返回0,失败返回-1
int stat(const char *path, struct stat *buf);
path:需要文件路径
int fstat(int fd, struct stat *buf);
fd:需要打开后的文件描述符
int lstat(const char *path, struct stat *buf);
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; // 最后文件属性修改时间
S_ISREG(m) 测试是否是标准文件
S_ISDIR(m) 目录
S_ISCHR(m) 字符设备文件
S_ISBLK(m) 块设备文件
S_ISFIFO(m) 管道文件
S_ISLNK(m) 软链接文件
S_ISSOCK(m) socket文件
S_IFMT 0170000 获取文件类型出错
S_IFSOCK 0140000 socket文件
S_IFLNK 0120000 软链接文件
S_IFREG 0100000 标准文件
S_IFBLK 0060000 块设备文件
S_IFDIR 0040000 目录
S_IFCHR 0020000 字符设备文件
S_IFIFO 0010000 管道文件
S_ISUID 0004000 set UID bit
S_ISGID 0002000 set-group-ID bit (see below)
S_ISVTX 0001000 sticky bit (see below)
S_IRWXU 00700 属主的读写执行权限
S_IRUSR 00400 属主的读
S_IWUSR 00200 属主的写
S_IXUSR 00100 属主的执行
S_IRWXG 00070 属组的读写执行权限
S_IRGRP 00040 属组的读
S_IWGRP 00020 属组的写
S_IXGRP 00010 属组的执行
S_IRWXO 00007 其它用户的读写执行权限
S_IROTH 00004 其它用户的读
S_IWOTH 00002 其它用户的写
S_IXOTH 00001 其它用户的执行