为什么pread不保证它读取所有指定的字节?

时间:2017-02-11 06:44:42

标签: c++ linux file

我使用C ++编程,发现pread非常有趣。

pread()返回读取的字节数。返回的返回字节数可能与要读取的指定字节数不同。

为什么pread不保证它读取所有指定的字节?

这种限制来自哪里?

2 个答案:

答案 0 :(得分:2)

  

为什么pread不保证它读取所有指定的字节?

因为它是这样设计的。

正如它提到here

  

请注意,成功调用较少的传输不是错误    比请求的字节数(见read(2)和write(2))。

所以你只需要在这种情况下再次调用该函数。

答案 1 :(得分:2)

  例如,这可能发生,因为实际可用的字节更少   现在(也许是因为我们接近文件结尾,或者因为我们   从管道或终端读取,或因为read()是   被信号打断了。出错时,返回-1,并设置errno   适当。在这种情况下,文件是否未指定   位置(如果有的话)改变。

来自https://linux.die.net/man/2/read

相关问题