2018-2019-1 20165236 《信息安全系统设计基础》第六周学习总结
一、教材内容学习总结
10.1 Unix I/O
一个Linux文件就是一个m个字节的序列,所有的I/O设备都被模型化为文件,而所有的输入和输出都被当做对相应文件的读和写来执行。
输入输出执行方式:
打开文件:一个应用程序通过要求内核打开相应的文件;
linux shell创建的每个进程开始时都有三个打开的文件:标准输入、标准输出、标准错误;
改变当前文件的位置;
读写文件;
关闭文件:当应用完成了对文件的访问之后,就通知内核关闭这个文件。
10.2 文件
每个linux文件都有一个类型来表明它在系统中的角色:
普通文件;
目录;
套接字。
10.3 打开和关闭文件
进程是通过调用open函数打开一个已存在的文件或创建一个新文件的:
open函数将filename转换为一个文件描述符,并且返回描述符数字,返回的描述符总是在进程中当前没有打开的最小描述符;
mode参数:指定了新文件的访问权限位。
10.4 读和写文件
应用程序是通过分别调用read和write函数来执行输入和输出的:
10.5 用RIO包健壮地读写
1、无缓冲的输入输出函数;
2、带缓冲的输入输出函数。
10.6 读取文件元数据
1、stat函数以一个文件名作为输入,fstat以文件描述符作为输入;
2、st_size成员包含了文件的字节数大小,st_mode成员则编码了文件访问许可位和文件类型。
10.7 读取目录内容
应用程序可以用readdir系列函数来读取马路的内容。
10.8 共享文件
1、描述符表:每个打开的描述符表项指向文件表中的一个表项;
2、文件表:打开文件的集合是由一张文件表来表示的,所有的进程共享这张表,包括文件位置、引用计数、一个指向v-node表中对应表项的指针;
3、v-node表:所有的进程共享这张v-node表,每个表项包含stat结构中的大多数信息,包括st_mode和st_size成员。
10.9 I/O重定向
1、linux>ls>foo.txt:
将标准输出重定向到磁盘文件foo.txt;
2、int dup2(int oldfd,int newfd):
复制描述符表项oldfd到描述符表表项newfd,覆盖描述符表项newfd以前的内容。如果newfd已经打开了,dup2会在复制oldfd之前关闭newfd。
二、上周课下测试错题总结
解析:课本P409.
三、学习感想
本周的课程学习相对于之前的几周难了一些,我采取了先读懂课本,结合老师在课上所讲的,并在课后做了大量的练习,终于弄明白了这一章,也为这周的学习画上了圆满的句号。