• stat命令的实现mystat


    stat命令的实现-mystat

    任务列表:

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

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

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


    3.伪代码

    1.运行程序,用户输入文件名,程序读取文件名
    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 */
    
                   /* Since Linux 2.6, the kernel supports nanosecond
                      precision for the following timestamp fields.
                      For the details before Linux 2.6, see NOTES. */
    
                   struct timespec st_atim;  /* Time of last access */
                   struct timespec st_mtim;  /* Time of last modification */
                   struct timespec st_ctim;  /* Time of last status change */
    
               #define st_atime st_atim.tv_sec      /* Backward compatibility */
               #define st_mtime st_mtim.tv_sec
               #define st_ctime st_ctim.tv_sec
               };
    

    3.读取结构体中的值,并按格式打印

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

     #include<stdio.h>
    #include<stdlib.h>
    #include<sys/types.h>
    #include<unistd.h>
    #include<time.h>
    #include<sys/stat.h>
    #define MAXLEN 256
    struct stat *s;
    
    int main(int argc,char **argv){
    	s=(struct stat *)malloc(sizeof (struct stat));
    	stat(argv[1],s);
    	printf("file:%s\n",argv[1]);
    	printf("size:%-10ld	block:%-10ld IOblock:%-7ld ",s->st_size,s->st_blocks,s->st_blksize);
    	switch (s->st_mode & S_IFMT) 
    	{ 
    		case S_IFBLK: printf("Block devices\n"); 
    			      break; 
    		case S_IFCHR: printf("character device\n");
    			      break; 
    		case S_IFDIR: printf("directory\n");
    			      break;
    	       	case S_IFIFO: printf("FIFO/pipeline\n");
    			      break;
    	       	case S_IFLNK: printf("Symbolic links\n");
    			      break;
    	       	case S_IFREG: printf("Normal file\n");
    			      break;
    	       	case S_IFSOCK: printf("socket\n");
    			       break;
    	       	default: printf("Unknown?\n"); break;
           	}
    	printf("equipment:%-10ld	Inode:%-10ld Hard links:%ld\n",s->st_dev,s->st_ino,s->st_nlink);
    	printf("Permissions:		   Uid:%d Gid:%d\n",s->st_uid,s->st_gid);
    	printf("Recently visited:%s",ctime(&s->st_ctime));
    	printf("Recent changes:%s",ctime(&s->st_atime));
    	printf("Recently modified:%s",ctime(&s->st_mtime));
    	printf("The creation time:-\n");
    	return 0;
    }
    

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

  • 相关阅读:
    Windows 2003下面Apache+SVN配置
    Oracle中年月日级联填充查询语句
    Tomcat创建一个windows服务
    Oracle10G常用维护语句汇总
    Oracle10g安装了11g的ODAC后,PL/SQL连接提示TNS:无法解析指定的连接标识符
    小谈EasyUI中的tree用法
    正则表达式用法
    执行存储过程返回游标集合转换成List
    面试过程中关于Oracle的查询
    一个可以匹配整数、浮点数的正则表达式
  • 原文地址:https://www.cnblogs.com/yu15141310373/p/16787885.html
Copyright © 2020-2023  润新知