前言:
这一部分基本就是文件的读取与写入的介绍,然后讲诉了文件描述符表与文件打开表,以及健壮的RIO读写文件程序。这一部分与APUE以及UNP中的部分内容是很相似的,因此会介绍的比较简单。
我的github:
我实现的代码全部贴在我的github中,欢迎大家去参观。
https://github.com/YinWenAtBIT
第十章:系统级I/O
定义:
输入/输出是在主存和外部设备之间拷贝数据的过程,输入操作时外部设备拷贝到内存,输出是内存拷贝到外部的I/O设备
一、RIO包健壮的读写:
1. RIO包的灵感:
来自《UNIX网络编程》中的readn与writen函数已经readline函数。不过原本的readline函数不是线程安全的。这个RIO版本的改进了这个问题。
共享文件:
一、描述符表:
每个进程都有自己的描述符表,它的表项是由进程打开的文件描述符来索引的。每个打开描述符都指向文件表中的一个表项。
二、文件表:
打开文件的集合由文件表来表示,所有的进程共享这张表,每个文件表的表项,包括当前的文件位置,引用计数,以及一个指向v-node表中对应表项的指针。关闭一个描述符会减少相应的文件表表项的引用计数。内核会在计数为0 时删除这个表项。
I/O重定向:
使用dup2函数,将描述符指向想要指向的文件表项,即可实现IO重定向。
总结:
这一部分内容没有太多要注意的,已经在UNP中学习过。不再是问题。