首页 > 其他 > 详细

操作系统第4次实验报告:文件系统

时间:2020-04-30 21:37:37      阅读:60      评论:0      收藏:0      [点我收藏+]

0 个人信息

  • 江雄鹏
  • 201821121043
  • 计算1812

1 实验目的

  • 进一步了解文件系统。

2 实验内容

  • 在服务器上用Vim编写一个程序:实现Linux系统命令ls -lai的功能
  • 给出运行结果截图,对于每一列是如何获取的,结合源代码做解释3 实验报告

3 编写程序

LS命令:

-l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;

-a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);

-i:显示文件索引节点号(inode)。一个索引节点代表一个文件;

代码:

 技术分享图片

 技术分享图片

 技术分享图片

 

4 运行结果及分析

ls -lai运行结果:

技术分享图片

./sy4  -lai运行结果:

 技术分享图片

 

第一列文件索引节点号(inode)。一个索引节点代表一个文件

    printf("%llu ", direntp->d_ino);

第二列表示该文件或目录的权限位。

  drwxr-xr-x代表文件的类型及权限

       r表是读 (Read) 、w表示写 (Write) 、x表示执行 (eXecute)

       以d开头的为文件夹,以-开头的为文件,

第三列:文件链接数.

  使用stat结构体中的st_nlink获取

  printf("%d ", file_message->st_nlink); // 打印硬链接数

第四列:文件(目录)拥有者

  使用stat结构体中的st_uid获取

  struct passwd* pwd;
  pwd = getpwuid(file_message->st_uid);
  printf("%s ",pwd->pw_name);

第五列:文件(目录)拥有者所在的组

  使用stat结构体中的st_gid获取

  struct group* grp;
  grp = getgrgid(file_message->st_gid);
  printf("%s ",grp->gr_name);

第六列:文件所占用的空间(以字节为单位)

使用stat结构体中的st_size获取

printf("%5ld ", file_message->st_size); // 打印文件大小

第七列:文件(目录)最近访问(修改)时间

使用stat结构体中的st_mtime获取

void file_mtime(const struct stat* file_message)
 {
 struct tm* t = localtime(&file_message->st_mtime);
 printf("%2d月 %2d %02d:%02d ", t->tm_mon+1, t->tm_mday, t->tm_hour, t->tm_min);
}

第八列:文件名

  使用dirent结构体中的d_name获取

  printf("%s ", filename); // 打印文件名   

 

 5 通过该实验产生的疑问

 

操作系统第4次实验报告:文件系统

原文:https://www.cnblogs.com/0606jxp/p/12811028.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!