从打开的文件读取数据需要read
function。
Linux 4.2.0 man中如下
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
Return:
number of bytes
0 : end of file
-1 : error
第二个参数是用来保存读取的数据的缓冲区。
第三个参数是希望读取的字节数。
然而有时实际读取的字节数会 小于< 需求的字节数(count),会产生该结果的情况如下: |
---|
在读取到count字节数据之前就已经达到文件尾,在下次读取的时候直接返回0. |
正在读取terminal device ,因此最多读取 one line的数据。 |
正在从network 读取数据,网络中的缓冲会造成该结果。 |
正在从FIFO or Pipeline 读取数据,如果其包含的数据少于count也会出现该结果。 |
正在从record-oriented device 读取数据。一些该类设备如magnetic tape(磁带) ,同一时间返回单个record。 |
当被信号打断,且已经读取了部分数据。 |
read
开始在文件的“current offset”,成功的读取后,file‘s offset
会增加读取的字节数。