系统级I/O

10.1 Unix I/O

所有I/O设备(例如网络,磁盘和终端)都被模型化位文件,所有的输入和输出都被当作对相应文件的读和写来执行

10.2 文件

普通文件:我们平时理解的文件 目录:是一组包含链接的文件,每个链接豆浆一个文件名映射到文件 套接字(socket):用来与另一个进程进行跨网络通信的文件

10.8 共享文件

内核用三个相关的数据结构来表示打开的文件:

  1. 描述符表:每个进程都有它独立的描述符表,包含了该进程所有打开的文件描述符,并各自指向了对应的文件表中的相关项
  2. 文件表:所有打开文件的集合,包含了(文件位置,引用计数,以及描述符),关闭一个描述符会减少引用计数,当一个文件的引用计数变为0时,会被删除。
  3. v-node表:主要保存了每个文件的state结构信息

由于文件表的存在,所以不同的描述符可以指向同一个文件表项,达到共享的目的

10.9 I/O 重定向

shell用>来重定向输入。 C中也有对应的方法,将描述符重定向到另外一个描述符,从而同时指向同一个文件

10.12

一般来说我们都用标准I/O,但是对于套接字文件来说,Unix I/O 比标准I/O更合适


--EOF--

若无特别说明,本站文章均为原创,转载请保留链接,谢谢