重读APUE(2)-read返回值少于要求读取字节数

返回值:

成功返回读到的字节数,如果达到文件尾,则返回0;注意:如果有数据第一次读取会返回全部读到的字节数,下一次读取才会返回0;

出错返回-1;

返回值少于要求读取字节数的情况:

1. 读取普通文件时,在读到要去字节数之前达到了文件尾,如:在达到文件尾之前有30个字节,而要求读取100个字节,则read返回30;下一次再调用read时,它将返回0(文件尾);

2. 当从终端设备读取时,通常一次最多读取一行;

3. 当从网络设备读取时,网络中的缓冲机制可能造成返回值小于要求读取的字节数;

4. 当从管道或者FIFO读取时,如果管道包含的字节数少于所需的数量,那么返回实际可用的字节数;

5. 当从某些面向记录的设备(如磁带)读取时,一次最多返回一个记录;

6. 当一个信号造成中断,而已经读取了部分数据量时,读操作在成功返回之前,将增加至实际读到的字节数;

 

posted @ 2019-10-30 08:08  AlexAlex  阅读(284)  评论(0编辑  收藏  举报