第十章 系统级IO
共享文件
- 描述符表(descriptor table):每个进程都有一张描述符表,记录进程打开的文件描述符,每个表项指向文件表的表项
- 文件表(file table):打开文件的集合由一张文件表来表示,所有进程共享一张表,表项描述当前文件位置、引用计数等,以及只想v-node表的指针
- v-node表:所有进程共享一张,表项包含文件大小、类型等内容
三者之间可以用一句话简单描述:多个描述符可以通过不同的文件表项来引用同一个文件
IO重定向
- 将原来描述符指向的文件表项指向新的文件表项
- 除了shell提供的>符号(right hoinky)外,libc提供接口dup2()可以实现