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.
原文地址:https://www.cnblogs.com/challengeeverthing/p/9906288.html