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

stat命令的实现-mystat

时间:2022-10-16 15:45:36浏览次数:37  
标签:case stat long st break 命令 mystat printf

1.使用stat截图

2.man -k grep -r的使用

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

4.代码

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 a;
if (argc != 2) {
fprintf(stderr, "Usage: %s \n", argv[0]);
exit(EXIT_FAILURE);
}
if (stat(argv[1], &a) == -1) {
perror("stat");
exit(EXIT_FAILURE);
}
printf("文件: %s\n",argv[1]);
printf("Inode: %ld\n", (long) a.st_ino);
printf("硬链接: %ld\n", (long) a.st_nlink);
printf("权限: Uid = %ld Gid = %ld\n",(long) a.st_uid, (long) a.st_gid);
printf("IO块: %ld ",(long) a.st_blksize);
switch (a.st_mode & S_IFMT)
{
case S_IFBLK: printf("块设备\n");
break;
case S_IFCHR: printf("character device\n");
break;
case S_IFDIR: printf("目录\n");
break;
case S_IFIFO: printf("FIFO/管道\n");
break;
case S_IFLNK: printf("符号链接\n");
break;
case S_IFREG: printf("普通文件\n");
break;
case S_IFSOCK: printf("socket\n");
break;
default: printf("未知?\n");
break;
}
printf("大小: %lld bytes\n",(long long) a.st_size);
printf("块: %lld\n",(long long) a.st_blocks);
printf("最近访问: %s", ctime(&a.st_atime));
printf("最近更改: %s", ctime(&a.st_mtime));
printf("最近改动: %s", ctime(&a.st_ctime));
exit(EXIT_SUCCESS);
}

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

标签:case,stat,long,st,break,命令,mystat,printf
From: https://www.cnblogs.com/quicci/p/16796299.html

相关文章

  • stat命令的实现-mysate
    学习stat(1)解决方法禁用man的SECCOMPexportMAN_DISABLE_SECCOMP=1永久解决:修改用户目录下的~/.bashrc文件进行配置vim~/.bashrc在最后一行加上exportMAN_DI......
  • stat命令的实现-mysate
    stat命令的实现-mysate(必做)学习任务:学习使用stat(1),并用C语言实现提交学习stat(1)的截图man-k,grep-r的使用伪代码产品代码mystate.c,提交码云链接测试代码,mysta......
  • 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动态修......