20145208 《信息安全系统设计基础》第十周学习总结
2016-11-18 19:50
197 查看
20145208 《信息安全系统设计基础》第十周学习总结
视频学习
目录文件永远不会为空,每个目录至少包含两个特殊项.和
..,其中
.表示当前目录,
..表示上一级目录。
相关系统调用:
man -k:将列出整个man page中和“所查找单词”相关的内容,是一种模糊查找。
grep -nr XXX /usr/include:查找宏定义,类型定义。
以
ls -l为例:可以显示当前目录下目录或文件的详细属性信息
man 1 ls查看一下ls指令解释
代码调试
代码cp1.c
进行复制文件的操作,需要有源文件和目的文件,第一次命令没有加入所以没有正常完成复制文件的操作cp帮助文档
代码fileinfo.c
用来实现显示文件信息。先判断命令是否有操作数,有的话才能继续进行下去,如果没有报错就打印出来相关文件信息,报错就用perror将报错信息打印出来。同样需要输入要查看的文件才会有信息打印出来
查看stat函数的帮助文档:
各宏变量的意义:
mode:st_mode 文件的类型和存取的权限
links:st_nlink 连到该文件的硬链接数目,刚建立的文件值为1
user:st_uid 用户ID
group:st_gid 组ID
size:st_size 文件字节数
modtime:st_mtime 最后一次修改时间
代码filesize.c
原本的代码是指定查找etc/passwd文件的大小,所以后面输入什么文件名都是一样的大小
代码中文件路径如下,
star()函数前面的参数是文件路径,后面是存入缓存的名称:
stat( "/etc/passwd", &infobuf)
为了测试我的猜测,我修改路径为
cp1.c的地址,结果如下:
可以看到测试结果和实际大小相同,所以只要把文件名设为键入赋值的就可以了
把代码修改如下:
#include <stdio.h> #include <sys/stat.h> #include <stdlib.h> //exit() int main(int argc, char * argv[]) { struct stat infobuf; char *filename; if (argc != 2) { printf("Please input filename\n"); exit(-1); } filename = argv[1]; if ( stat(filename, &infobuf) == -1 ) perror(filename); else printf(" The size of %s is %d\n",filename, infobuf.st_size ); }
再次编译运行得到想要的效果
代码ls1.c
简单的显示所在文件夹中的文件及文件夹列表代码ls2.c
显示所在文件夹中的文件及文件夹详细信息的列表代码setecho.c
可以改变符号显示状态,no是不显示符号,yes是显示可以看到no指令后输入的命令看不见,状态值为0;yes指令后恢复可见,状值态为1.
代码echostate.c
用来检查命令行中的提示符是否显示的,如果显示,输入的命令都可见,不显示则表示输入的命令不可见tcgetattr:tcgetattr函数用于获取与终端相关的参数。参数fd为终端的文件描述符,返回的结果保存在termios结构体中
tcsetattr:tcsetattr函数tcsetattr函数用于设置终端参数。
perror:打印错误信息
此外,为了更好的理解函数返回值的过程,用grep命令查看了其中的几个宏变量:
ECHO:显示输入字符,值为0000010
c_lflag:本地模式标志,控制终端编辑功能
代码spwd.c
显示出所在目录代码testioctl.c
计算当前命令行窗口的行列数大小不同大小的变化如下:
查看isatty和ioctl函数的帮助文档:
isatty:判断文件描述词是否是为终端机,如果参数所代表的文件描述词为一终端机则返回1,否则返回0。
ioctl:是设备驱动程序中对设备的I/O通道进行管理的函数,其中d是用户程序打开设备时使用open函数返回的文件标示符,request是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,这个参数的有无和request的意义相关
代码who1.c
从UTMP_FILE文件中读取系统中用户信息代码who2.c
此代码和who1.c相同……代码托管
代码托管链接
代码托管链接代码行数截图
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第一周 | 0/0 | 1/2 | 20/20 | 学会了虚拟机安装和Ubuntu的基本操作 |
第二周 | 56/56 | 1/3 | 20/40 | 学会了Ubuntu终端下的C语言编写 |
第三周 | 110/166 | 1/4 | 30/70 | 熟悉了gdb的基本操作,了解了计算机信息表示和处理 |
第四周 | 110/166 | 1/5 | 10/80 | 复习了前几周的知识 |
第五周 | 42/208 | 2/6 | 30/110 | 学习了linux下的汇编语言内容 |
第六周 | 447/655 | 1/7 | 30/140 | 了解了linux下Y86模拟器的使用 |
第七周 | 71/726 | 1/8 | 20/160 | 学习了局部性原理和缓存思想的应用 |
第八周 | 0/726 | 2/10 | 20/180 | 复习了之前的学习内容并总结 |
第九周 | 133/859 | 2/12 | 20/200 | 学习了系统级I/O的内容,了解了函数的内在 |
第十周 | 407/1266 | 1/13 | 30/230 | 对代码进行分析调试,又理解一些系统级的I/O内容 |
参考资料
2016-2017-1 《信息安全系统设计基础》教学进程代码托管链接
相关文章推荐
- 20145208《信息安全系统设计基础》第3周学习总结
- 20145315 《信息安全系统设计基础》第十周学习总结
- 20145227《信息安全系统设计基础》第十周学习总结
- 20145228 《信息安全系统设计基础》第十周学习总结 (2)
- 20145216史婧瑶《信息安全系统设计基础》第十周学习总结
- 20145208 《信息安全系统设计基础》第5周学习总结
- 20144303《信息安全系统设计基础》第十周学习总结
- 20145215《信息安全系统设计基础》第十周学习总结
- 20145311 《信息安全系统设计基础》第十周学习总结
- 20145329 《信息安全系统设计基础》第十周学习总结
- 20145316 《信息安全系统设计基础》第十周学习总结
- 20145208 《信息安全系统设计基础》第七周学习总结
- 20145240 《信息安全系统设计基础》第十周学习总结
- 20145208 《信息安全系统设计基础》第六周学习总结
- 20145208 《信息安全系统设计基础》第一周学习总结
- 20145208 《信息安全系统设计基础》第九周学习总结
- 20145337 《信息安全系统设计基础》第十周学习总结
- 20145207《信息安全系统设计基础》第十周学习总结
- 20145319 《信息安全系统设计基础》第十周学习总结
- 20145326蔡馨熠《信息安全系统设计基础》第十周学习总结