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

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 通过该实验产生的疑问

 

posted @ 2020-04-30 21:11  菻冧  阅读(152)  评论(0编辑  收藏  举报