什么是I/O?
Input输入,Output输出,是主存和外部设备之间复制数据的过程
Unix I/O
一个Linux 文件就是一个m个字节的序列。所有的I/O设备都被模型化为文件,所有的输入和输出都被当做对应文件的读和写来执行。这种将设备映射为文件的方式,使得Linux内核引出一个简单、低级的应用接口,称为Unix I/O。
文件种类:
普通文件、目录、套接字、命名管道、符号链接、字符和块设备。
共享文件
Linux内核用三个数据结构来表示打开的文件
- 描述符表(descriptionor table)
每个进程都拥有一个独立的描述符表, 表项是由该进程打开的描述符来索引的
- 文件表(file table)
打开文件的集合由该表来维护,所有进程共享该表,文件表有个表项,它是由三个部分组成,分别是:该文件的位置,描述符表的应用计数,和v-node表的表项指针
- v-node表
所有进程共享该表
I/O重定向
Linux shell提供了I/O重定向操作符,允许用户将磁盘文件和标准输人输出联系起来。
ls>foo.txt
使得shell加载和执行is程序,将标准输出重定向到磁盘文件foo.txt。