zoukankan      html  css  js  c++  java
  • Mystat

    学习使用stat(1),并用C语言实现

    1. 提交学习stat(1)的截图

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

    3. 伪代码

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

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

    1.提交学习stat(1)的截图

    stat 命令了解:

    作用:用来显示文件的详细信息,包括inode,atime,mtime,ctime
    格式:stat [OPTION]…FILE…
    stat 命令格式

    -L:显示符号链接
    -f:显示文件所在的文件系统信息
    -t:以简洁的方式输出摘要信息
    stat 输出内容
    File:显示文件名
    Size:显示文件大小
    Blocks:文件使用的数据块总数
    IO Block:IO块大小
    regular file:文件类型(常规文件)
    Device:设备编号
    Inode:Inode号
    Links:链接数
    Access:文件的权限
    Gid、Uid:文件所有权的Gid和Uid
    

    提交学习 stat(1) 的截图

    使用命令 man 1 stat 查看,截图如下:

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

    使用 man -k stat | grep 2 查找stat相关函数

    使用 man 2 stat 学习函数

    3. 编写mystate.c的伪代码

    用户运行 mystat.c 程序,输入文件名
    man 2 stat函数学习后可知调用stat函数实现功能
    结构体struct 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;     //最后一次改变时间(指属性)
    };
    

    依次调用函数,打印输出节点ino,文件类型mode,文件的连接数nlink,用户ID uid和组ID gid,块大小blksize,字节数size,块数目blocks,以及三个时间atime、mtime、ctime

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

    产品代码 mystate.c:

    #include <sys/types.h>
    #include <sys/stat.h>
    #include <time.h>
    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char *argv[])
    {
        struct stat sb;
        if (argc != 2) {
            fprintf(stderr, "Usage: %s <pathname>
    ", argv[0]);
            exit(EXIT_FAILURE);
        }
        if (stat(argv[1], &sb) == -1) {
            perror("stat");
            exit(EXIT_FAILURE);
        }
        printf("File type:                ");
        switch (sb.st_mode & S_IFMT) {
            case S_IFBLK:   printf("block device
    ");
                break;
        case S_IFCHR:   printf("character device
    ");
                break;
        case S_IFDIR:   printf("directory
    ");
                break;
        case S_IFIFO:   printf("FIFO/pipe
    ");
                break;
        case S_IFLNK:   printf("symlink
    ");
                break;
        case S_IFREG:   printf("regular file
    ");
                break;
        case S_IFSOCK:  printf("socket
    ");
                break;
        default:        printf("unknown?
    ");
                break;
        }
        printf("I-node number:            %ld
    ", (long) sb.st_ino);
        printf("Mode:                     %lo (octal)
    ",(unsigned long) sb.st_mode);
        printf("Link count:               %ld
    ", (long) sb.st_nlink);
        printf("Ownership:                UID=%ld   GID=%ld
    ",(long) sb.st_uid, (long) sb.st_gid);
        printf("Preferred I/O block size: %ld bytes
    ",(long) sb.st_blksize);
        printf("File size:                %lld bytes
    ",(long long) sb.st_size);
        printf("Blocks allocated:         %lld
    ",(long long) sb.st_blocks);
        printf("Last status change:       %s", ctime(&sb.st_ctime));
        printf("Last file access:         %s", ctime(&sb.st_atime));
        printf("Last file modification:   %s", ctime(&sb.st_mtime));
        exit(EXIT_SUCCESS);
    }
    

    编译运行mystat.c

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

    码云链接:https://gitee.com/qi_shao_bo/diocs/tree/master/

    星光荡开宇宙
  • 相关阅读:
    linux 命令——48 watch (转)
    linux 命令——47 iostat (转)
    linux 命令——46 vmstat(转)
    linux 命令——45 free(转)
    linux 命令——44 top (转)
    linux 命令——43 killall(转)
    linux 命令——42 kill (转)
    linux 命令——41 ps(转)
    linux 命令——40 wc (转)
    Java for LeetCode 068 Text Justification
  • 原文地址:https://www.cnblogs.com/pogbar/p/15505653.html
Copyright © 2011-2022 走看看