20145208 《信息安全系统设计基础》第十周学习总结
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内容 |
参考资料
posted on 2016-11-18 19:50 20145208蔡野 阅读(259) 评论(3) 收藏 举报
浙公网安备 33010602011771号