本文共 1486 字,大约阅读时间需要 4 分钟。
stat函数详解
操作步骤
1.1.1 获取文件信息
stat函数用于获取文件或目录的详细信息,主要用于文件系统的操作和管理。
1.1.2 函数依赖
使用stat函数前需包含以下头文件:
#include #include #include
1.1.3 函数定义
函数原型定义如下:
int stat(const char *path, struct stat *buf);
1.1.4 调用结果
1.1.5 函数参数
path:文件路径或文件名 buf:用于存储文件信息的struct stat结构体
struct stat结构体
1.2.1 struc stat成员说明
struct stat结构体包含以下成员:
st_dev:设备ID st_ino:inode节点ID st_mode:文件模式和权限位 st_nlink:硬链接数量 st_uid:文件所有者ID st_gid:文件组ID st_rdev:设备文件的设备ID st_size:文件大小(字节) st_blksize:文件系统I/O块大小 st_blocks:文件占用的块数量 st_atime:最后一次访问时间 st_mtime:最后一次修改时间 st_ctime:最后一次状态改变时间
1.2.2 st_mode权限位
st_mode的低5位(即0b00000至0b11111)表示文件类型及其权限:
- 0b11111: 设备文件类型掩码(S_IFMT)
- 0b01100: 套接字(S_IFSOCK)
- 0b01000: 符号连接(S_IFLNK)
- 0b00100: 一般文件(S_IFREG)
- 0b00000: 区块设备文件(S_IFBLK)
- 0b00000: 目录(S_IFDIR)
- 0b00000: 字符设备文件(S_IFCHR)
- 0b00000: 先进先出文件(S_IFIFO)
- 0b00000: 套接字(S_ISSOCK)
1.2.3 权限位解释
st_mode的高10位(0b00000000000至0b11111111111)表示文件权限:
- 0b00000000000: 设备文件类型掩码(S_IFMT)
- 0b00000000000: sticky位(S_ISVTX):防止文件被删除或重命名
- 0b00000000000: 执行权限(S_IEXEC):文件所有者可执行
- 0b00000000000: 写权限(S_IWRITE):文件所有者可写
- 0b00000000000: 读权限(S_IREAD):文件所有者可读
- 0b00000000000: 用户组权限(S_IRGRP):用户组成员可读
- 0b00000000000: 用户组写权限(S_IWGRP)
- 0b00000000000: 用户组执行权限(S_IXGRP)
- 0b00000000000: 其他用户可读(S_IROTH)
- 0b00000000000: 其他用户可写(S_IWOTH)
- 0b00000000000: 其他用户可执行(S_IXOTH)
1.2.4 st_mode的结构
st_mode的结构可以分为三部分:
文件类型与设备类型(15-12位):用于判断文件类型,例如目录或设备文件 执行权限(11-9位):用于判断文件是否可执行 读/写权限(8-0位):用于判断文件的读写权限 此外,st_mode中还包含sticky位(S_ISVTX),用于表示文件是否具有“粘性”属性(即只能被文件所有者、目录所有者或root删除或重命名)。
转载地址:http://fbzi.baihongyu.com/