20145314郑凯杰《信息安全系统设计基础》第10周学习总结
明确教材学习目标
本周的学习计划是上一周的补充与完善,并对一些代码进行深入理解思考。
重点如下:
-
注意每个系统调用的参数、返回值,会查帮助文档
-
阅读教材,完成课后练习(书中有参考答案),考核:练习题把数据变换一下
-
学习视频,掌握两个重要命令:
man -k key1 | grep key2| grep 2 : 根据关键字检索系统调用
t5:grep -nr XXX /usr/include :查找宏定义,类型定义
t6:
- 教材中相关代码运行、思考一下,读代码的学习方法见「代码驱动的程序设计学习」。
- 代码重点:课程演示代码
重点分析老师所给我们的代码:
图2:
教材学习内容总结
① cp命令####
功能: 复制文件或目录
cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息。
图1:
其详细的使用方法为:
复制文件,只有源文件较目的文件的修改时间新时,才复制文件
cp -u -v file1 file2
将文件file1复制成文件file2
cp file1 file2
采用交互方式将文件file1复制成文件file2
cp -i file1 file2
将文件file1复制成file2,因为目的文件已经存在,所以指定使用强制复制的模式
cp -f file1 file2
将目录dir1复制成目录dir2
cp -R file1 file2
同时将文件file1、file2、file3与目录dir1复制到dir2
cp -R file1 file2 file3 dir1 dir2
复制时保留文件属性
cp -p a.txt tmp/
复制时保留文件的目录结构
cp -P /var/tmp/a.txt ./temp/
复制时产生备份文件
cp -b a.txt tmp/
复制时产生备份文件,尾标 1格式
cp -b -V t a.txt /tmp
指定备份文件尾标
cp -b -S _bak a.txt /tmp
运行截图:
图3:
② echostate.c####
功能:检查命令行中的提示符是否是可见的,可见返回1,否则返回0:
运行结果:
图4:
③ setecho.c####
功能:可以改变符号显示状态,no是不显示符号,yes是显示。
设置回显位的状态,命令行参数为y则开启,否则关闭。
注意
- 标准输入的文件描述符为0.
- 使用tcgetattr()函数和termios结构体可获得标准输入的属性。
- 使用tcsetattr()函数和termios结构体可以将更改后的属性设置重新写回标准输入。
运行结果:
图5:
并没有什么显示。
④ ioctl
功能:ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。系统调用ioctl提供对连接到fd设备驱动程序的属性和操作访问,每种类型的设备都有自己的属性集和ioctl操作集。
查看帮助文档 man ioctl
图6:
运行代码:
图7:
⑤ls命令
功能:读取文件名和文件属性,按照字典序排序后输出。
首先是ls1
:简单的显示所在文件夹中的文件及文件夹列表
运行结果:
图8:
ls2.c
功能:显示指定目录下的文件详细信息
运行结果:
图9:
⑥filesize.c
功能:通过stat得到文件大小信息,即指定查找etc/passwd文件的大小
运行结果:
图10:
编译
图11:
⑦fileinfo.c
功能:如其名字一样,用来实现显示文件信息。首先判断命令是否有操作数,有的话继续进行下去,如果没有报错就打印出来相关文件信息,报错就用perror将报错信息打印出来。
图12:
图14:
一个小测试,当文件不存在时
⑧WHO
功能:读取系统中用户信息
运行截图:
图15:
代码上传链接与截图
本周五百行代码:
图20:
链接:http://git.oschina.net/qiaokeli26/linux
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第七周 | 1300/1750 | 11/11 | 140/140 | |
第八周 | 1700/2000 | 13/13 | 160/160 | |
第九周 | 2000/2400 | 14/15 | 180/180 | |
第十周 | 2500/2800 | 15/17 | 0/200 |
| 第十周 | 3000/3000 | 15/17 | 0/200 | |