stat命令的实现

作业要求

学习使用stat(1),并用C语言实现
提交学习stat(1)的截图
man -k ,grep -r的使用
伪代码
产品代码 mystate.c,提交码云链接
测试代码,mystat 与stat(1)对比,提交截图

学习stat(1)的截图

  • man 1 stat查看

通过学习知道了stat的作用,用法,参数等。stat主要是用于查询一个文件或路径的信息。

语法格式
  stat [option] file

参数选项
-L:显示符号链接所指向文件的信息
-f:显示文件所在文件系统的信息
-t:以简洁方式输出信息
-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的使用

首先使用man -k stat | grep 2查找系统调用

man 2 stat 查看stat的结构体

          struct stat {
               dev_t     st_dev;         /* ID of device containing file */
               ino_t     st_ino;         /* Inode number */
               mode_t    st_mode;        /* File type and mode */
               nlink_t   st_nlink;       /* Number of hard links */
               uid_t     st_uid;         /* User ID of owner */
               gid_t     st_gid;         /* Group ID of owner */
               dev_t     st_rdev;        /* Device ID (if special file) */
               off_t     st_size;        /* Total size, in bytes */
               blksize_t st_blksize;     /* Block size for filesystem I/O */
               blkcnt_t  st_blocks;      /* Number of 512B blocks allocated */
            }

grep -r stat用于在该目录下查找包含stat的文件

伪代码实现

判断输入中是否包含文件参数,如果有则继续,没有则提示用户输入错误
根据文件路径,调用stat()函数给结构体赋值
逐个取出结构体中的数据并输出
使用switch语句来判断注意文件的mode

产品代码

码云链接

对比截图

posted @ 2021-11-06 13:38  南城花落  阅读(51)  评论(0编辑  收藏  举报
/* 看板娘 */