文件的状态和属性
- 1、文件的状态和属性
- 2、命令方式查看文件的状态和属性
-
- [(1) file命令](#(1) file命令)
- [(2) stat命令](#(2) stat命令)
- 3、函数方式查看文件的状态和属性
在linux中,文件的状态和属性查看有两种方式:命令方式和函数方式
1、文件的状态和属性
(1)What(什么是文件的状态和属性)
文件状态:
访问时间相关、文件类型、文件大小、硬链接数
文件属性:
读写执行的权限属性
2、命令方式查看文件的状态和属性
(1) file命令
cpp
file test.cpp -b/-i/-F/-L
- -b:只显示文件类型和文件编码,不显示文件名
- -i:显示文件的MIME类型
- -F:设置输出字符串的分隔符
- -L:针对软链接文件,直接显示指向文件的信息
(2) stat命令
stat命令显示文件或目录的详细属性信息包括文件系统状态,比ls命令输出的信息更详细
cpp
stat -f/-c/-t/-L test.cpp
- -f:只显示文件所在文件系统的信息
- -c:查看文件的单个属性信息
- -t:简洁模式,只显示摘要信息,不显示文件属性描述
- -L:查看软链接所指向文件的信息
3、函数方式查看文件的状态和属性
stat/lstat 函数的功能和 stat 命令的功能是一样的, 只是应用场景不一样;
cpp
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
int stat(const char *pathname, struct stat *buf);
int lstat(const char *pathname, struct stat *buf);
- pathname:文件名
- buf:返回值,存储了文件pathname的文件状态和属性信息
- return:0表示调用成功,-1表示失败
cpp
struct stat {
dev_t st_dev; // 文件设备编号
ino_t st_ino; // inode节点
mode_t st_mode; // 文件的类型和存取的权限, 16位整形数 -> 常用
nlink_t st_nlink; // 文件的硬连接数目,刚建立的文件值为1
uid_t st_uid; // 用户ID
gid_t st_gid; // 组ID
dev_t st_rdev; // (设备类型)若此文件为设备文件,则为其设备编号
off_t st_size; // 文件字节数(文件大小) --> 常用
blksize_t st_blksize; // 块大小(文件系统的I/O 缓冲区大小)
blkcnt_t st_blocks; // block块数
time_t st_atime; // 最后一次访问时间
time_t st_mtime; // 最后一次修改时间
time_t st_ctime; // 最后一次改变时间
};