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

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多少个字节操作的
发布了38 篇原创文章 · 获赞 1 · 访问量 1048

猜你喜欢

转载自blog.csdn.net/qq_40897531/article/details/103160241