#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文件