关于文件读写的一些其他记录

errno 和 perror

  • errno - error number

每个错误会对应一个error number,出错的时候就会return这个errno值,但是你不知道这个error number代表的是什么意思,这时候就需要perror

  • perror - print error
    可以把此时的error信息通过print来显示出来,让你知道是什么错误

read和write中的count

一、到底count多少?
在man手册里面可以看到read/write函数里面需要传参count进去,传count几位就读或者写几位

read() attempts to read up to count bytes from file descriptor fd into
the buffer starting at buf.

以read来举例,这里说attemps to read up to count byte.就是说读count个字节

if count is greater than SSIZE_MAX, the result is
implementation-defined;

如果count大于最大的读写内容的话就按照实际大小来读写。

简单的理解是这样的,但是后面运用的话要联系到阻塞式与非阻塞式上,如果是阻塞式的,这时候要读的20个byte里面只有10个ready了,剩下10个还没ready,就要等一直count够才能够发(或者下一步动作),这些后面如果有使用到的话要继续深入了解。

二、能不能count这么多
文件一般不是几个字节几个字节,有的可能几m,这时候就需要设定一个合适的count多少字节的大小,比如2048,然后通过循环来count,循环终止条件就看看最后一次count是否够2048,如果不够就继续直到读完。

文件IO与标准IO

  • 文件IO与标准IO
    上的open、read、write、close这些都是文件IO
    有一种叫做标准IO
    fopen、fread、fclose、fwrite,相比较而言,标准IO的效率是高于文件IO的,因为它读写的时候是系统自己找到合适的时机进行count多少个字节操作的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值