RIO无缓冲输入
RIO无缓冲输入/输出函数提供了对二进制数据的可靠读写,通过内部循环确保满足请求的传输字节数。
rio_readn:
- 原型:
ssize_t rio_readn(int fd, void *usrbuf, size_t n) - 从
fd读取恰好n字节到usrbuf。 - 内部实现:在循环中调用
read,直到读取总数达到n字节或遇到EOF。 - 返回值:成功返回
n(若遇到EOF则返回实际读取的字节数),出错返回-1。
rio_writen:
- 原型:
ssize_t rio_writen(int fd, void *usrbuf, size_t n) - 从
usrbuf写入恰好n字节到fd。 - 内部实现:循环调用
write,直到写入总数达到n字节。 - 返回值:成功返回
n,出错返回-1。
适用场景:
- 二进制文件读写:确保完整读取或写入固定大小的数据结构。
- 网络数据传输:处理TCP流中的短计数问题。
- 不适合用于文本行读取,因为行边界不易确定。
链接到
- 上一个知识点:10.5 RIO包
- 下一个知识点:10.7 RIO带缓冲输入