stat命令的实现-mystat
stat(1)学习
man 1 stat
查看stat帮助文档
观察SEE ALSO有关内容,猜测stat使用系统调用
功能
stat命令主要用于显示文件或文件系统的详细信息,相比ls命令而言,stat还可以看到设备号,环境等信息。
格式
stat [option] file or dir
常用选项
其中-c
选项可使用如下参数
%a 八进制表示的访问权限
%A 可读格式表示的访问权限
%b 分配的块数(参见 %B)
%B %b 参数显示的每个块的字节数
%d 十进制表示的设备号
%D 十六进制表示的设备号
%f 十六进制表示的 Raw 模式
%F 文件类型
%g 属主的组 ID
%G 属主的组名
%h 硬连接数
%i Inode 号
%n 文件名
%N 如果是符号链接,显示器所链接的文件名
%o I/O 块大小
%s 全部占用的字节大小
%t 十六进制的主设备号
%T 十六进制的副设备号
%u 属主的用户 ID
%U 属主的用户名
%x 最后访问时间
%X 最后访问时间,自 Epoch 开始的秒数
%y 最后修改时间
%Y 最后修改时间,自 Epoch 开始的秒数
%z 最后改变时间
%Z 最后改变时间,自 Epoch 开始的秒数
针对文件系统还有如下格式选项:
%a 普通用户可用的块数
%b 文件系统的全部数据块数
%c 文件系统的全部文件节点数
%d 文件系统的可用文件节点数
%f 文件系统的可用节点数
%C SELinux 的安全上下文
%i 十六进制表示的文件系统 ID
%l 文件名的最大长度
%n 文件系统的文件名
%s 块大小(用于更快的传输)
%S 基本块大小(用于块计数)
%t 十六进制表示的文件系统类型
%T 可读格式表示的文件系统类型
man -k和grep -r查找stat有关函数
man -k stat | grep 2
在man手册中第二节查找包含的内容
使用man -k stat | grep -nr include
指令
使用man 2 stat
查找stat函数调用有关内容
找到包含stat有关的头文件
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
结构体
返回值
SEE ALSO
stat伪代码
判断输入中是否包含文件参数,如果有则继续,没有则提示用户输入错误
声明结构体,调用函数stat();
打印输出
{
节点ino;
文件类型mode;
文件的连接数nlink
用户ID uid和组ID gid;
块大小blksize;
字节数size;
块数目blocks;
三个时间atime、mtime和ctime
}
产品代码 mystate.c
代码已上传至码云我的仓库
测试代码
创建test.txt测试文件,先用stat进行测试
再使用mystat,二者对比