read/write函数

来源:互联网 发布:淘宝刷手小号 编辑:程序博客网 时间:2024/05/21 10:49

read函数

1.函数原型

#include<unistd.h>
size_t read(int fd, void* but, size_t nbytes);
返回值:成功返回读到的字节数,如果在文件末尾返回0,失败返回-1.

2.如果读到字节数少于需求的字节数的情况

1.当读入普通文件的时候,如果在读取出要求的字节数之前到达了文件的末尾。
比如:文件里面还有30个字节没有读区,但是我们要求读100个,这次读取返回30,下次返回0(end of file).
2.当从终端设备读取的时候。正常,一次读取一行
3.当从网络读取的时候。在网络里面的buffer可能会使返回的字节总数少于要求数。
4.当从pipe或者FIFO读取的时候。,如果pipe里面的字节数少于需求的,那么只会返回可提供的。
5.当从记录设备里面读取的时候。一些记录设备,比如磁带,每次会返回一个记录。
6.当被信号中断时,会返回已经被读入的数据。

3.其它事项

读操作从文件当间偏移量开始,在成功返回之前,文件当前偏移量增加读入的字节数。

write函数

1.函数原型

#include<unistd.h>
ssize_t write(int fd, const void* but, size_t nbytes);

函数返回值:成功返回写入的字节数,失败返回-1.
返回值通常等于nbytes,不然的话,会产生一个错误。
通常引起write error的原因是磁盘空间满了,或者操作超出了文件大小限制。
对于一个普通文件,写操作从文件当前偏移量开始,如果如果O_APPEND在文件打开时被设置了,在写操作之前将文件当前偏移量
设置为文件末尾。在写入成功之后,文件偏移量增加写入的字节数。






0 0
原创粉丝点击