2017-2018-1 20155324 《信息安全系统设计基础》第四周学习总结
2017-2018-1 20155324 《信息安全系统设计基础》第四周学习总结
补充完成课上没有完成的内容
题目要求:
1 参考教材第十章内容
2 用Linux IO相关系统调用编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能,注意XXX是文件名,通过命令行传入,不要让用户输入文件名
3. 不要把代码都写入main函数中
4. 要分模块,不要把代码都写入一个.c中
5 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
6 课上上传代码到码云
实践过程:
- 用命令
od -tx1 -tc XXX
实现效果,在终端输入命令
- 通过使用
man
命令的基本用法了解如何寻找一个需要特定功能的函数:输入命令man -k system | grep call
来了解系统调用的相关信息,如下图所示
- 最终运行截图
- 遇到的问题
刚开始输入命令时会出现乱码,在进制转换时无符号数、有符号数、浮点数的没有太在意。
通过输入正确的命令od -tx -tc
解决了问题
- 之后编译不通过,是整数类型定义是出现了错误。
char:字符型数据,占用一个字节
unsigned char:无符号字符型数据,占用一个字节
short:短整形数据,占用两个字节
unsigned short:无符号短整型数据,占用两个字节
int:整形数据,占用两个字节
unsigned int:无符号整型数据,占用两个字节
long:长整型数据,占用四个字节
unsigned long:无符号长整型数据,占用四个字节
教材学习内容总结
- 写文件
#include <unistd.h>
ssize_t write (int fd, const void *buf, size_t count);
- 进程是通过调用open函数来打开一个已存在的文件或者创建一个新文件的:
open函数将filename转换为一个文件描述符,并且返回描述符数字。返回的描述符总是进程中当前没有打开的最小描述符。flags参数指明了进程打算如何访问这个文件:
- O_RDONLY:只读
- O_WRONLY:只写
- O_RDWR:可读可写
进程通过调用close函数关闭一个打开的文件。
#include<unistd.h>
int close (int fd);
返回:若成功则为0,若出错则为-1.
参考别出心裁的Linux系统调用学习法,学习视频,掌握两个重要命令:
-
man -k key1 | grep key2| grep 2 : 根据关键字检索系统调用
-
grep -nr XXX /usr/include :查找宏定义,类型定义,用于阅读.h文件
完成head,tail的使用,相关API的分析,伪代码,产品代码,测试代码的编写(3分)
head命令用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。
tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。
注意:如果表示字节或行数的N值之前有一个”+”号,则从文件开头的第N项开始显示,而不是显示文件的最后N项。N值后面可以有后缀:b表示512,k表示1024,m表示1 048576(1M)。
head命令
1.命令格式:
head [参数]... [文件]...
2.命令功能:
head 用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。
3.命令参数:
-q 隐藏文件名
-v 显示文件名
-c<字节> 显示字节数
-n<行数> 显示的行数
4.使用实例:
- 显示文件的前n行
命令:
head -n 3 20155324.txt
- 显示文件前n个字节
命令:
head -c 10 20155324.txt
- 文件的除了最后n个字节以外的内容
命令:
head -c -32 20155324.txt
- 输出文件除了最后n行的全部内容
命令:
head -n -6 20155324.txt
tail命令
用途1:显示文件的最后n个字节,(加上+号的又有不同表现)
用途2:显示文件的后n行,(与用途1一样,加上+号有不同意义)
用途3:不显示/显示文件名
用途4:实时监控更新,若要设定一个间隔时间则使用-s参数
代码托管
(statistics.sh脚本的运行结果截图)
尝试一下记录「计划学习时间」和「实际学习时间」,到期末看看能不能改进自己的计划能力。这个工作学习中很重要,也很有用。
耗时估计的公式
:Y=X+X/N ,Y=X-X/N,训练次数多了,X、Y就接近了。
-
计划学习时间:XX小时
-
实际学习时间:XX小时
-
改进情况:
(有空多看看现代软件工程 课件
软件工程师能力自我评价表)