2021-2022-1-diocs-stat命令的实现-mystat

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,二者对比

posted @ 2021-11-02 20:25  Ensoleile  阅读(27)  评论(0编辑  收藏  举报