代码开源(2)——UNIX 健壮I/O函数

       摘自《深入理解计算机系统》一书,几个IO读写的封装函数。一共是两类,一是无缓冲的输入输出函数;二是带缓冲的输入函数。这几个函数有一个共同点,就是比较好的处理了“不足值”的情况。所谓“不足值”是指read和write函数传送的字节比应用程序要求的要少。下面几种情况可能会出现不足值:(1)读时遇到EOF;(2)从终端读文本行;(3)读和写网络套接字,内部缓冲约束和较长的网络延迟会引起read和write返回不足值。

       这几个函数自动处理了上述提到的不足值,在像网络程序这样容易出现不足值的应用中,提供了方便、健壮和高效的I/O。

#ifndef RIO_H_
#define RIO_H_

#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#define RIO_BUFSIZE 8192

typedef struct
{
	int rio_fd;
	int rio_cnt;
	char *rio_pbuf;
	char rio_buf[RIO_BUFSIZE];
}rio_t;

//无缓冲输入输出
ssize_t rio_readn(int fd, void *usrbuf, size_t n);
ssize_t rio_writen(int fd, void *usrbuf, size_t n);
//带缓冲输入
void rio_readinitb(rio_t *pr, i
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值