RIO包
RIO(Robust I/O)包是由CSAPP作者提供的一组包装函数,用于解决原始Unix I/O中短计数(short count)问题,提供更安全的读写操作。
为什么需要RIO:
- 原始的
read和write系统调用可能返回短计数,调用者必须循环处理剩余字节。 - RIO包封装了这一循环逻辑,确保请求的字节数一定能被完全读写。
两种RIO类型:
- 无缓冲RIO:直接基于系统调用,适用于二进制数据的网络传输和文件读写。提供
rio_readn和rio_writen。 - 带缓冲RIO:在用户空间维护一个内部缓冲区,减少系统调用次数,适用于文本行读取。提供
rio_readlineb和rio_readnb。
RIO包并非标准系统库的一部分,但它简洁的设计使其成为理解系统I/O和学习如何构建健壮I/O代码的优秀示例。
链接到
- 上一个知识点:10.4 标准输入输出
- 下一个知识点:10.6 RIO无缓冲输入