计算机科学与技术系
实验(项目)报告
一、基本信息
实验(项目)名称 显示文件长格式信息 课程名称 学生专业 学生班级 学生姓名 指导教师 二、目的与要求
目的:
通过实验掌握Linux环境下文件属性管理的基本方法。 要求:
1.了解文件属性、用户/组ID与名字的转换、硬链接与符号链接; 2.掌握dup/dup2的功能及使用方法; 3.掌握文件属性修改的基本函数及方法。 三、完成实验(项目)过程和效果
内容:
1. 项目分析与设计;
ls命令用于查看目录信息,ls命令有很多参数选项,其中ls-l可以以长格式显示文件的属性信息;
Linux系统中文件包括两部分:数据块和索引节点inode。文件的属性信息就保存在文件的inode中,文件的数据内容存储在数据块中。Linux系统中提供了读取文件属性和修改文件属性的系统调用;
要想显示文件的详细属性信息,首先要得到文件的属性信息。文件的属性信息包含在文件的索引节点中,先杀的信息应该包括文件的inode节点编号、文件名、文件主人及数组名、文件长度,文件最后修改时间等。 2. 项目实施;
(1) 根据用户输入的文件名,读取该文件的索引节点。
(2) 从索引节点中提取所需的各项信息,经过必要的转换后输出。 3. 项目编译与运行。
Linux系统编程 信息工程 信工一班 黎子涵 董祥千 学生层次 本科 学生年级 2014级 学生学号 14310920101 完成日期 2016年11月7日 报告成绩
(1) 编译。
#gcc -o ls ls .c (2) 运行。
#./ls -l 文件名
步骤:
1.项目分析与设计 1)ls命令功能解析
输入命令ls—l后:
访问日期、时间 文件名 文件类型、权限 文件属主、组、长度
2)项目基本流程图。
(1)信息打印
(2)文件类型检查
(3)文件属性获取
通过调用stat()获取该文件的属性信息并显示。对于文件的索引节点编号st_ino、链接数st_link、文件主的用户ID号st_uid、文件主组ID号st_gid、文件块的个数st_blocks、块大小st_blksize、等其他数值属性,直接将结果输出。
至于文件大小要通过判断是否为设备文件,再进一步判断,文本类型的判定用到switch—case语句。 四、知识应用以及经验总结
通过这次显示文件属性项目,我明白了做一个系统的难度之大,首先要进行需求分析,然后通过流程图来清晰自己的思路,整个过程虽然很繁琐,很复杂,但完成任务后,内心的成就感爆棚,给自己的未来增加了满满的信心!这次的实验,我学会了如何用代码实现操作系统的部分功能,如查看文件属性、通过判断不同的文件类型确定文件的大小等等,瞬间觉得特别高大上。希望今后能学习到更多到社会上有用的东西。