linux read/write

ssize_t read(int fd, void *buf, size_t count);

头文件:include <unistd.h>;

count是请求读取的字节数,存在buf缓存区, 文件的都写位置向后移,到文件尾返回0, 出错返回-1, 返回值类型ssize_t, 表示有符号size_t, 这样既可以读到正的字节数,0(到达文件尾),-1(出错),read返回时,返回值决定了buf中有效字节数, 有些情况使得实际读到的字节数小于count;


ssize_t write(int fd, count void *buf, size_t count);

返回值是写入的字节数, 出错返回-1, 写常规文件, write的返回值通常等于请求的字节数count, 设备和网络不一定,读常规文件不会阻塞,读网络文件没有数据包就会阻塞;


open 一个设备指定了O_NONBLACK,read/write就不会阻塞。

以read为例,如果设备没有数据到达返回-1,同时error为EWOULDBLACK或者EAGAIN,表示现在不阻塞直接返回错误,可以试着在都一次(again),这种方式称为轮询(poli);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值