2018-2019-1 20165333 《信息安全系统设计基础》第六周学习总结
2018-2019-1 20165333 《信息安全系统设计基础》第六周学习总结
教材内容总结
Unix I/O
- 打开文件。一个应用程序通过要求内核打开相应的文件,来宣告它想要访问一个I/O设备。
- Linux shell创建的每个进程开始都有三个打开的文件:标准输入(0)、标准输出(1),和标准错误(2)。头文件<unistd.h>定义了常量STDIN_FILENO、STDOUT_FILENO_FILENO和STDERR_FILENO,他们可用来代替显式的描述符值。
- 改变当前的文件位置
- 读写文件
- 关闭文件。当应用完成了对文件的访问之后,他就通知内核关闭这个文件。
文件
每个Linux文件都有一个类型来表明它在系统中的角色。
- 普通文件包含任意数据
- 目录
- 套接字
Linux内核将所有文件都组织成一个目录层次结构,由名为/的根目录确定。系统中的每个文件都是根目录的直接或间接的后代。
打开和关闭文件
进程是通过调用open函数来打开一个已存在的文件或者创建一个新文件的。
- open函数将filename转换为一个文件描述符,并且返回描述符数字。
- flags参数指明了进程打算如何访问这个文件
- mode参数指定了新文件的访问权限位。
- 进程通过调用close函数关闭一个打开的文件。关闭一个已关闭的文件会出错。
读和写文件
应用程序是通过分别调用read和write函数来执行输入和输出的。
共享文件
内核用三个相关的数据结构来表示打开的文件:
- 描述符表
- 文件表
- v-node表
I/O重定向
Linux shell 提供了I/O重定向操作符,允许用户将磁盘文件和标准输入输出联系起来。
- I/O重定向如何工作
一种方式是使用dup2函数。dup2函数复制描述符表表项oldfd到描述符表表项newfd,覆盖描述符表表项newfd以前的内容。如果newfd已经打开了,dup2会在复制oldfd之前关闭newfd.