本周学习任务:
1. 编译运行代码 2. 使用man学习理解相关系统调用, 理解参数、返回值的含义 3. 会用grep -nr xxx /usr/include 查宏定义一、重要命令
① man :查看Linux中的指令帮助、配置文件帮助和编程帮助等信息
② man -k key1 | grep key2| grep 2 : 根据关键字检索系统调用
③grep -nr XXX /usr/include :查找宏定义,类型定义(n:为显示行号 r:为递归查找)
二、编译运行代码和理解相关系统调用、参数、查宏定义
此次学习任务代码如下:
(1)CP:复制文件或目录
说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件或目录复制到此目录中。若同时指定多个文件或目录,而最后的目的地并非一个已存在的目录,则会出现错误信息
如上图,将CP1的代码已复制到文本destination.c中,如下查看destination.c确定
man cp 查看CP指令的功能说明、语法、参数
(2)echostate.c:显示终端是否已经开启
说明:tcgetattr()
函数用于获取与终端有关的参数。成功返回0;失败返回非0,接口设置errno错误标识。
读取驱动设置并显示回显位的状态:1.标准输入的文件描述符为0
2.使用tcgetattr()函数和termios结构体可以读取到设备的属性
3.回显位状态放置在termios.c_lflag中
(4)fileinfo.c:显示文件信息,包括使用者,分组,大小,修改时间和文件名。
说明:后跟文件名作为参数
(1)用来实现显示文件信息,建立了一个stat数据结构。
(2)要先判断命令是否有操作数
(5)filesize:计算文件的字节数大小
说明:显示/etc/passwd
文件的大小。/etc/passwd
文件用于用户登录时校
验用户的口令
(6)ls1.c:显示目录内容
说明:如果后跟目录,则显示指定目录的成员,否则,默认显示当前目录内容
对比正常的LS命令,显然ls1.c是纵向逐一显示,linux中是横向叙述
(7)ls2.c:显示目录内容的文件名、权限控制,大小,拥有者,修改时间等信息
说明:与ls -l命令相似
(8)setecho.c:用于开关终端显示
说明:假如参数为空,直接关闭;假如参数为‘y’,则开启显示;假如为其他参数,则关闭显示。
设置回显位的状态,命令行参数为y则开启,否则关闭。
1.标准输入的文件描述符为0.
2.使用tcgetattr()函数和termios结构体可获得标准输入的属性。
3.使用tcsetattr()函数和termios结构体可以将更改后的属性设置重新写回标准输入。
如下图:其中宏ECHO
经grep可知为000010
(9)spwd.c:默认显示当前所在目录的名字
(10)testioctl.c:将winsize结构体中的行和列显示出来,可以用于测试ioctl函数
。
说明:其中ioctl函数
提供了一种获得设备信息和向设备发送控制参数手段。
(11)who1.c&&who2.c:显示系统登录的记录,包括登录者名字,登录装置名和时间
学习体会:
通过编译运行、思考、查阅代码1.理解了相关系统调用, 理解参数、返回值的含义2.学会了用grep -nr xxx /usr/include 查宏定义3.理解linux系统基本指令的运行原理但是学习过程中很多不足:1.代码理解能力有待提高,代码中很多细节不理解2.信息筛选能力较低,当查阅所需资料时,当出来很多详细信息,我只能慢慢找;3.英语有待提高,很多指令多是用英语叙述,英语水平较低基本不能理解。
参考资料
1.博客:《信息安全系统设计基础》第一次实验报告--Linux 基础入门http://www.cnblogs.com/20135223heweiqin/p/4824516.html
2.Linux常用命令全集.CHM(很早以前已经下载,无链接)
3. LINUX 使用tcgetattr函数与tcsetattr函数控制终端http://blog.chinaunix.net/uid-10747583-id-97303.html
4.Linux文件权限详解:http://blog.chinaunix.net/uid-25052030-id-174343.html