我使用C ++编程,发现pread非常有趣。
pread()返回读取的字节数。返回的返回字节数可能与要读取的指定字节数不同。
为什么pread不保证它读取所有指定的字节?
这种限制来自哪里?
答案 0 :(得分:2)
为什么pread不保证它读取所有指定的字节?
因为它是这样设计的。
正如它提到here:
请注意,成功调用较少的传输不是错误 比请求的字节数(见read(2)和write(2))。
所以你只需要在这种情况下再次调用该函数。
答案 1 :(得分:2)
例如,这可能发生,因为实际可用的字节更少 现在(也许是因为我们接近文件结尾,或者因为我们 从管道或终端读取,或因为read()是 被信号打断了。出错时,返回-1,并设置errno 适当。在这种情况下,文件是否未指定 位置(如果有的话)改变。