stat命令的实现-mystat

stat(1)学习

##学习使用stat(1),并用C语言实现 ##1、提交学习stat(1)的截图 man 1 stat 查看stat帮助文档

stat命令以文字的格式来显示inode的内容。

查看文件inode信息
File:显示文件名
Size:显示文件大小
Blocks:文件使用的数据块总数
IO Block:IO块大小
regular file:文件类型(常规文件) ,如果是其他文件类型会显示出对应的文件类型
Device:设备编号
Inode:Inode号
Links:链接数
Access:文件的权限
Gid、Uid:文件所有权的Gid和Uid。
Access Time:简写为atime,表示文件的访问时间。当文件内容被访问时,更新这个时间
Modify Time:简写为mtime,表示文件内容的修改时间,当文件的数据内容被修改时,更新这个时间。
Change Time:简写为ctime,表示文件的状态时间,当文件的状态被修改时,更新这个时间,例如文件的链接数,大小,权限,Blocks数。

stat结构体

struct stat {
    dev_t    st_dev;       //文件的设备编号
    ino_t    st_ino;       //节点
    mode_t   st_mode;      //文件的类型和存取的权限
    nlink_t  st_nlink;     //连到该文件的硬连接数目,刚建立的文件值为1
    uid_t    st_uid;       //用户ID
    gid_t    st_gid;       //组ID
    dev_t    st_rdev;      //(设备类型)若此文件为设备文件,则为其设备编号
    off_t    st_size;      //文件字节数(文件大小)
    unsigned long  st_blksize;   //块大小(文件系统的I/O 缓冲区大小)
    unsigned long  st_blocks;    //块数
    time_t         st_atime;     //最后一次访问时间
    time_t    st_mtime;     //最后一次修改时间
    time_t    st_ctime;     //最后一次改变时间(指属性)
};

2、man -k ,grep -r的使用

man 2 stat 查看stat()函数使用方法

man -k stat | grep 2 查询stat命令的系统调用

3、伪代码

首先判断输入中是否包含文件参数,如果有则继续,没有则提示用户输入错误。
然后声明结构体,并调用stat()函数给结构体赋值,将文件的设备编号、节点、文件的类型和存取的权限、连到该文件的硬链接数目等按顺序输出。 

4、产品代码 mystate.c,提交码云链接

mystate.c
新建mystat.c文件并编译文件

5、测试代码,mystat 与stat(1)对比,提交截图

原文地址:https://www.cnblogs.com/daijunxi2019/p/15501093.html