ls命令的实现
6详细设计
6.1.1模块一ls命令实现 1.功能
①ls -l:每个文件单独占一行,显示文件的详细属性信息 ②ls -a:显示包括隐藏文件在内的所有文件 ③ls -u:显示出文件的最后访问时间 ④ls:显示的文件名按字典顺序排序 ⑤ls /指定目录:显示当前目录下的内容
⑥ls -lu:每个文件单独占一行,显示文件的详细属性信息,并且显示出文件的 最后访问时间
⑦ls -la:显示包括隐藏文件在内的所有文件的详细属性信息
⑧ls -lua:显示包括隐藏文件在内的所有文件的详细属性信息,并且显示出文 件的最后访问时间
⑨chmod 权限 文件名:修改文件的权限,并且显示出此文件是否受suid,sgid 和sticky的控制
⑩chmod 权限(3位) 在一终端运行程序,读取文件信息,在另一终端修改文 件权限,看结果。
6.1.2模块一ls命令实现
①编写内核模块,打印super_block结构中一些域的值。(课本上的例子)遍历系统中的超级块:list_head结构类型的字段名称为s_list。list_entry宏通过指向list_head节点的地址来得到外部超级块的首地址。获取系统中个超级块的地址,获得某个子进程的地址,打印文件系统所在的主设备号和次设备号和文件系统名。遍历打印每个超级块中的所有索引节点号,打印索引结点。
②给内核模块传入参数path,其中path为绝对路径 path=路径时,显示如下信息:
1.哈希表 2.目录项名 3.短目录名 4.目录项标志 5.目录项长度
6.目录项计数器的引用
path=文件时,显示如下信息:
1.版本号 2.用户组ID 3.用户ID 4.硬链接数 5.引用记数 6.文件大小 7.文件的块数 8.文件类型和权限 9.索引节点的状态
10.以位为单位的块大小