首页 > 其他分享 >stat命令的实现-mysate

stat命令的实现-mysate

时间:2022-10-16 14:12:09浏览次数:68  
标签:stat mysate long st break 命令 printf sb

stat命令的实现-mysate(必做)

学习任务:

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

  1. 提交学习stat(1)的截图
  2. man -k ,grep -r的使用
  3. 伪代码
  4. 产品代码 mystate.c,提交码云链接
  5. 测试代码,mystat 与stat(1)对比,提交截图

过程实现:

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

    输入man stat

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

    输入man -k stat

    输入man -k stat | grep 2查找系统调用

    输入man 2 stat

系统调用以结构体的形式出现,如图:

  1. 伪代码

    调用函数stat(),依次打印

    输出节点ino、

    文件类型mode、

    文件的连接数nlink、

    用户ID uid、

    组ID gid、

    块大小blksize、

    字节数size、

    块数目blocks、

    最后一次访问时间atim、

    最后一次修改时间mtim、

    最后一次改变时间ctime。

  2. 产品代码 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>\n", 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\n");
               break;
       case S_IFCHR:   printf("character device\n");
               break;
       case S_IFDIR:   printf("directory\n");
               break;
       case S_IFIFO:   printf("FIFO/pipe\n");
               break;
       case S_IFLNK:   printf("symlink\n");
               break;
       case S_IFREG:   printf("regular file\n");
               break;
       case S_IFSOCK:  printf("socket\n");
               break;
       default:        printf("unknown?\n");
               break;
       }
       printf("I-node number:            %ld\n", (long) sb.st_ino);
       printf("Mode:                     %lo (octal)\n",(unsigned long) sb.st_mode);
       printf("Link count:               %ld\n", (long) sb.st_nlink);
       printf("Ownership:                UID=%ld   GID=%ld\n",(long) sb.st_uid, (long) sb.st_gid);
       printf("Preferred I/O block size: %ld bytes\n",(long) sb.st_blksize);
       printf("File size:                %lld bytes\n",(long long) sb.st_size);
       printf("Blocks allocated:         %lld\n",(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);
   }

码云链接:https://gitee.com/weihehaha/20201329homework/blob/master/mystat.c

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

标签:stat,mysate,long,st,break,命令,printf,sb
From: https://www.cnblogs.com/weihehahaha/p/16796125.html

相关文章

  • gitee常用命令
              ————————————————版权声明:本文为CSDN博主「日拱一卒~」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本......
  • static关键字
    packageobj2;/***@authorliu$*@version1.0**1.static关键词的使用(静态的)*2.用来修饰:属性、方法、代码块、内部类**3.用来修饰属性:静态变量(类变量)*......
  • SQL1001N is not a valid database name. SQLSTATE=2E000
    $db2createdbhcba_appstoreusingcodesetUTF-8territoryCNCOLLATEUSINGSYSTEM出现错误SQL1001N"hcba_appstore"isnotavaliddatabasename.SQLSTATE=2E0......
  • stat命令的实现-mysate
    学习目标提交学习stat(1)的截图man-k,grep-r的使用伪代码产品代码mystate.c,提交码云链接测试代码,mystat与stat(1)对比,提交截图提交学习stat(1)的截图安装man手册......
  • redis:通用命令
    通用指令是部分数据类型的,都可以使用的指令,常见的有:KEYS:查看符合模板的所有keyDEL:删除一个指定的keyEXISTS:判断key是否存在EXPIRE:给一个key设置有效期,有效期到......
  • 补:java中static的用法总结
    关于java在static中的用法,大致可以总结为以下三个模块:其一为:静态变量某些特定的数据在内存中只有一份,而且能被一个类的所有实例对象共享。可以使用类名.变量名的形式来访......
  • gdb命令
    调用gdb编译需要在cc后面加-g参数再加-o;#gdb调试文件:启动gdb(gdb)l:从第一行开始列出源码(gdb)breakn:在第n行处设置断点(gdb)breakfunc:在函数func()的入口处......
  • Linux命令
    命令查询man-kxxx查询各种命令。版本uname-a内核版本号cat/etc/issueUbuntu版本号sudolsb_release-aUbuntu发行版系统procinfo显示系统状态/proc/sys动态修......
  • git命令简记
    一般来说,我们本地如果想要使用Git管理一些资源文件,首先我们需要有一个仓库才行。常用的方式莫过于,第一去Gitlab/Github先创建一个仓库,然后再拉到本地,那这个时候我们就......
  • mystat
    1.stat(1)    2.man-k,grep-r的使用   3.伪代码判断输入中是否包含文件参数——若有,则继续。——若没有,则提示用户输入错误......