zoukankan      html  css  js  c++  java
  • 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
    

    产品代码

    码云链接

    对比截图

  • 相关阅读:
    deeplearning.ai 卷积神经网络 Week 1 卷积神经网络
    deeplearning.ai 构建机器学习项目 Week 2 机器学习策略 II
    deeplearning.ai 构建机器学习项目 Week 1 机器学习策略 I
    deeplearning.ai 改善深层神经网络 week3 超参数调试、Batch Normalization和程序框架
    deeplearning.ai 改善深层神经网络 week2 优化算法
    deeplearning.ai 改善深层神经网络 week1 深度学习的实用层面
    cs231n spring 2017 lecture8 Deep Learning Networks
    cs231n spring 2017 lecture7 Training Neural Networks II
    cs231n spring 2017 lecture6 Training Neural Networks I
    cs231n spring 2017 Python/Numpy基础
  • 原文地址:https://www.cnblogs.com/ruier/p/15516698.html
Copyright © 2011-2022 走看看