2017-02-11 72 views

回答

1

這可能發生,例如因爲較少的字節是實際可用 現在(也許是因爲我們接近於最終的文件,或者是因爲我們 是從管道讀取,或從終端),或因爲read()是由信號中斷的 。出錯時,返回-1,並適當地將errno設置爲 。在這種情況下,未指定文件 的位置(如果有)是否更改。

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

2

爲什麼pread不能保證它讀取所有指定的字節?

因爲它是這樣設計的。

因爲它提到here

注意,這並不是一個成功的調用比請求轉移較少 字節的錯誤(請參閱read(2)和write(2))。

所以你只需要在這種情況下再次調用該函數。

+0

所以你知道爲什麼嗎?這種行爲的根本原因是什麼? – syko

+2

@syko這是設計。它支持將數據作爲可用塊傳送的I/O接口。 –

相關問題