python操作系统课程设计_西安邮电大学linux操作系统课程设计ls的编写含源码.doc...

西安郵電學/uid-796091-id-3206153.html;

给内核模块传入参数path,其中path为绝对路径;

当path为目录时,显示目录对应的dentrey结构中的相关信息(可打印的信息);

当path为文件时,显示文件对应的indoe结构中的相关信息(可打印的信息);

当路径错误时,有错误提示信息。

开发环境

设备名称设备类型配置类型参数Lenovo PC机硬件配置软件配置

测试环境

设备名称设备类型配置类型参数LenovoPC机硬件配置软件配置

总体设计

5.1功能组织图

ls 功能图:

文件权限:

内核模块:

super_blocks:

path:

5.2原理

linux?文件系统??:

linux下有普通文件、目录文件、链接文件、设备文件、管道文件这几种类型。但链接文件、设备文件、管道文件都可以当做普通文件看待,那实际也就只要区分普通文件和目录文件这两种了。而目录文件的内容就是它所包含所有文件和子目录的一个列表,所以只要打开目录文件并读取对应目录块里的那个列表数据,就可以得到些目录下所有文件和子目录的名称了。其实这个流程简单,就是:打开目录->读取内容->显示文件名称->关闭打开的目录。?

Linux系统中会有很多目录。每个目录中又会有很多文件。如果要列出一个非当前目录的内容或者是一个特定文件的信息,则需要在参数中给出目录名或文件名。如:?

?ls?/tmp?//列出/tmp目录中各文件的文件名???

ls?–?docs?//列出docs目录中各文件的属性?

ls?*.c?//列出当前目录下与*.c匹配的文件,即当前目录下所有以.c为后缀的?????经常用到的命令行选项?

ls?-l?在前面已经提到过,-l就是输出文件详细的信息?????

?ls?-a?列出的内容包含以“.“开头的文件,即所谓有隐藏文件?

?Linux的文件访问权限:

Linux是一个安全的操作系统,说他安全,最重要的一个原因是对用户访问权限的控制。在shell下我们可以通过命令ls-l filename 来查看一文件的属性。其中第一项文件属性总共由10位构成,第一位是文件类型,剩下9位都是表示文件的访问权限,每3个一组,第一组:文件所有者对该文件的操作权限,第二组表示与文件所有者同组的用户对该文件的操作权限,第三组表示其他用户对该文件的操作权限,权限由三种字母组成:r:可读w:可写x:可执行。

编写内核模块

写内核模块,打印super_block结构中一些域的值。(课本上的例子)

遍历系统中的超级块:list_head结构类型的字段名称为s_list。list_entry宏通过指向list_head节点的地址来得到外部超级块的首地址。获取系统中个超级块的地址,获得某个子进程的地址,打印文件系统所在的主设备号和次设备号和文件系统名。遍历打印每个超级块中的所有索引节点号,打印索引结点。

内核模块传入参数path,其中path为绝对路径

path=路径时,显示如下信息:

目录项标志、哈希表、短目录名、目录项长度、目录项名、目录项计数器的引用

path=文件时,显示如下信息:

文件索引节点的数量、文件类型和权限、用户ID、用户组ID、指定文件系统的读写访问标志、文件大小、索引节点的状态、硬链接数、引用记数、文件的块、版本号、以位为单位的块大小

详细设计

模块一ls

1.功能

(1)ls支持 -l 参数;

(2)输出结果按字典排序;

(3)列出“.”文件,支持-a参数,在没有-a时候不显示隐藏文件;

(4)显示记录总数。

(5)支持对给定的目录进行操作,如 ls /tmp;

(6)输出结果分栏排序,每栏的宽度由这一栏最长的文件名决定,显示的栏数还受终端显示器的宽度影响,每一列尽可能的等宽;

(7)修改文件权限

2.算法/流程图

ls算法描述:

用parameter[20]保存命令行参数的值,用path[PATH_MAX+1]保存文件的路径名;程序运行时,先将命令参数保存下来,并给flag_parameter赋相应的值,再判断文件路径是否存在,不存在则代表当前目录,将./赋值给path,若存在,则根据文件路径判断是文件还是目录,若是文件,就根据flag_parameter和path调用Output_parameter()函数,输出该文件的属性;若是目录,就将正确的目录名保存到path;最后根据flag_parameter和path调用Output_dir()函数,列出目录下所有文件的属性。

流程图:

main()函数:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值