stat()系统调用用于获取文件属性和信息。它可以用于获取文件大小、创建时间、访问时间、修改时间、权限等信息。 语法格式为:
int stat(const char *pathname, struct stat *statbuf);
stat()方法参数包含:
- pathname:要获取信息的文件路径
- statbuf:用于接收文件信息的stat结构体指针 stat结构体定义在<sys/stat.h>头文件中,包含如下成员:
- st_dev:文件系统ID
- st_ino:节点ID
- st_mode:文件类型和权限
- st_nlink:硬链接数
- st_uid:用户ID
- st_gid:组ID
- st_rdev:设备ID(若是特殊文件)
- st_size:文件大小(字节)
- st_blksize:块大小
- st_blocks:块数
- st_atime:最近访问时间
- st_mtime:最近修改时间
- st_ctime:文件创建时间 stat()系统调用会将获取到的文件信息填充到stat结构体中,并通过statbuf参数返回给调用者。 常见用法: 获取文件大小:
struct stat statbuf;
stat("file.txt", &statbuf);
int size = statbuf.st_size;
检查文件类型:
struct stat statbuf;
stat("file.txt", &statbuf);
if (S_ISREG(statbuf.st_mode)) { // 普通文件
...
} else if (S_ISDIR(statbuf.st_mode)) { // 目录
...
}
获取文件最近访问时间:
struct stat statbuf;
stat("file.txt", &statbuf);
time_t time = statbuf.st_atime;
所以,通过stat()系统调用,你可以获取文件:
- 类型(普通文件、目录、设备文件等)
- 权限
- 大小
- 块信息
- 时间(访问时间、修改时间、创建时间)
- 用户与组信息
- 设备ID
- 节点ID