2017-2018-1 20155308 《信息安全系统设计基础》第四周学习总结(第四周测试)
2017-2018-1 20155308 《信息安全系统设计基础》第四周学习总结
教材学习内容总结
任务一myod-系统调用版本
要求:
- 参考教材第十章内容
- 用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能,注意XXX是文件名,通过命令行传入,不要让用户输入文件名
- 不要把代码都写入main函数中
- 要分模块,不要把代码都写入一个.c中
- 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
学习:Linux od命令详解
http://www.jb51.net/article/102421.htm
- 功能
od命令用于将指定文件内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符。od命令系统默认的显示方式是八进制,名称源于Octal Dump。
常见的文件为文本文件和二进制文件。od命令主要用来查看保存在二进制文件中的值,按照指定格式解释文件中的数据并输出,不管是IEEE754格式的浮点数还是ASCII码,od命令都能按照需求输出它们的值。
- 命令格式
od [<选项><参数>][<文件名>]
以十六进制输出,默认以四字节为一组(一列)显示。
od -tc -tx 20155308.txt
以十六进制输出,每列输出一字节。
od -tx1 testfile
这样显示就整齐多了。
- 如果要是用myod.c代码实现运行:
码云链接为
https://gitee.com/haowenfei25/XinXiAnQuanXiTongSheJiJiChu20155308/blob/master/ketang/myod.c
实验过程中的问题
在编译之后,直接运行myod,将会出现以下的问题:
后来我发现不能直接运行,而是应用命令限制输出
./myod -tc -tx1 12.txt
结果就正常了
任务二
- 对于文件的处理:
- 打开文件:宣告想要访问一个I/O设备,内核返回描述符(小的非负整数)
改变当前的文件位置:内核保持着一个文件位置k,是从文件开头起始的字节偏移量 - 读写文件:调用read和write函数文件从当前文件位置开始读写。调用read和write函数来执行输入和输出的,read成功返回读的字节数,若EOF为0,出错为-1。
•write成功则为写的字节数,出错则为-1 - 关闭文件:内核释放文件打开时创建的数据结构,并将这个描述符恢复到可用的描述符池中
- RIO包
RIO提供两种函数
无缓冲的输入输出函数:直接在存储器和文件之间传送数据,没有应用级缓冲,对二进制数据读写到网络和从网络读写二进制数据
任务三 完成head,tail的使用
-head命令就是对文件打印代码,默认是从头开始打印前10行 ,也可以自定义打印
<1>head -n xxx :打印前几行
<2>head -c xxx :打印前几个字
- tail命令就是对文件打印代码,默认是从头开始打印后10行 ,也可以自定义打印
<1>tail -n xxx:打印后几行
<2>head -c xxx :打印后几个字
通过man -k head了解head命令的主要功能
缩小查找范围
保存一个文件
打印出文件前几行的文字
通过man tail了解tail命令的主要功能
打印后十个字
感悟、思考
本次课上测试主要是根据之前我们所编写的myod代码进行的一次测试,我在课堂上没有做出来,所以课下根据网上的讲解和同学的代码,认真了解了这个命令的使用,并且自己做了实践,感觉受益匪浅。