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流中的短计数问题。
  • 不适合用于文本行读取,因为行边界不易确定。

链接到