首页 > 其他分享 >stat(1)学习/mystat实现

stat(1)学习/mystat实现

时间:2022-10-10 14:47:16浏览次数:42  
标签:文件 stat grep st 学习 mystat man

stat(1)

关于stat

stat命令主要用于显示文件或文件系统的详细信息,该命令的语法格式如下:

  • -f:不显示文件本身的信息,显示文件所在文件系统的信息
  • -L:显示符号链接
  • -t:简洁模式,只显示摘要信息
    stat命令显示的是文件的I节点信息。Linux文件系统以块为单位存储信息,为了找到某一个文件所在存储空间的位置,用I节点对每个文件进行索引,I节点包含了描述文件所必要的全部信息,其中包含了文件的大小,类型,存取权限,文件的所有者。
    使用命令 man -k stat

    使用命令 man stat查看stat的系统调用

    从图中可以看到stat的用法是display file or file system status,显示文件的状态
Linux下的stat函数

传参方式:通过文件名filename获取文件信息,并保存在buf所指的结构体stat中
头文件:

#include <sys/stat.h>
 #include <unistd.h>

结构体:

  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;     //最后一次改变时间(指属性)
  };

格式:int stat(const char *file_name, struct stat *buf );

man -k,grep -r的使用

man -k 根据关键字搜索联机帮助,是一种模糊搜索。
grep -r 快速搜索在目录下面的含有关键字的文件
所以加上grep可以帮助我们更快地找到我们所需的文件
使用命令man -k stat | grep 1

使用命令grep -r stat
匹配到二进制文件

伪代码

1.将stat所需的文件路径(filename/filepath)作为参数传入到argv中
2.使用stat(pathname,&buf)函数将文件的相关信息存入到stat结构体中
3.系统调用stat函数进行相关信息的输出

实现mystat

编译运行结果如下:

上传码云

1.首先在ubuntu下输入命令 sudo apt-get install git,下载安装git

2.进行git配置

复制码云链接,部署

将写好的mystat代码移动到wjstat文件夹下:

最后部署成功:

码云链接如下:https://gitee.com/wang-jingspm/wjstat/blob/master/mystat.c

具体的ubuntu git环境配置可参考链接https://blog.csdn.net/daocaokafei/article/details/121895641

mystat与stat(1)对比

通过对比我们可以发现,基本的输出内容都相似,但是gid 和 uid 由于我的代码中是以整形形式输出,所以输出的是1000,而原来的stat函数输出的是wj/1000,其代表的含义都相同,另外,更改日期等表示的方法不一样,但代表的含义也都相同。

标签:文件,stat,grep,st,学习,mystat,man
From: https://www.cnblogs.com/ssssspm/p/16774844.html

相关文章

  • WEB学习笔记 html篇
    htmlHTML(HyperTextMarkupLanguage)是用来描述网页的一种语言。HTML不是一种编程语言,而是一种标记语言。学习HtML其实就是学习标签。快速入门新建文本文件,后缀名......
  • 吴恩达机器学习复习4:非线性假设、神经和大脑、模型表示1、模型表示2、例子与直觉1、例
    【非线性假设】为什么我们需要神经网络?   因为神经网络不需要大量的为特征设计的内容或有大量特征,,我们可以直接把数据放进进神经网络模型,让它自己进行训练,并做自我......
  • 稀疏&集成的卷积神经网络学习
    计算机视觉研究院专栏作者:Edison_G今天主要和大家说的是分类检测过程中,一些稀疏和集成学习的相关知识,首先和大家说下图像目标定位与检测的方法分类。公众号ID|ComputerVision......
  • 深度学习的昨天、今天和明天
    计算机视觉研究院专栏作者:Edison_G人脸领域的技术一直是热门研究话题,随着优秀算法和先进芯片的进一步成熟,各厂家集成能力的提升,人脸识别技术必将是未来人工智能社会的先驱。......
  • Meta-DETR | 图像级“元”学习提升目标检测精度
    计算机视觉研究院专栏作者:Edison_GOne-shot目标检测旨在通过几个标注的样本来检测新的目标。之前的工作已经证明了元学习是一个很有前途的解决方案,它们中的大多数基本上是通......
  • 第五组 chao3 多分支结构学习总结
    一,学习内容梳理1.多分支结构和else-if语句else--if是最常用的实现多分支(多路选择)的方法,其一般形式为:if(表达式1) 语句1;else if(表达式2) 语句2;...12elseif(表达......
  • 简单易懂的讲解深度学习(入门系列之一)
    公众号ID|ComputerVisionGzq学习群|扫码在主页获取加入方式计算机视觉研究院专栏作者:Edison_G目前人工智能非常火爆,而深度学习则是引领这一火爆现场的“火箭”。目前人工智能......
  • 小样本学习 | 尝试用于三星堆脸型目标检测(附论文框架下载)
    “计算机视觉研究院”计算机视觉研究院专栏作者:Edison_G近期三星堆正在发掘,大家都在翘首以盼揭开它的真相,这次出土非常多的物品,其中最期待的就是希望能找出三星堆文明和其他......
  • ICCV2021最佳检测之一:主动学习框架较大提升目标检测精度(附论文下载)
    计算机视觉研究院专栏作者:Edison_G新框架优于基于单模型的方法,并且以一小部分计算成本与基于多模型的方法相媲美!公众号ID|ComputerVisionGzq学习群|扫码在主页获取加入方式论......
  • iostat命令
    一、概述iostat主要用于输出磁盘IO和CPU的统计信息iostat属于sysstat软件包,可以用yum installsysstat直接安装二、iostat用法1、用法:iostat[选项][<时间间隔>......