2

Linux で read() syscall を使用して任意のソース (ファイル、ソケット、パイプ) から読み取る場合、(ブロッキング モードで) 返すことができる最小データ量はありますか? または、syscall は 1 バイトを返すことさえできますか?

パイプから 1 つの int (4 または 8 バイト) を読み取りたい場合、read() の戻り値をチェックして、受信したバイト数が sizeof(int) バイト未満かどうかを確認する必要がありますか?

4

1 に答える 1

5

最小値がブロック サイズであるブロック モード デバイスを除いて、最小値はありません。

常に戻り値を確認する必要があります。物事が壊れる可能性があるため、反対側が常に完璧であると想定するのではなく、破損を計画し、短い読み取りとエラーを適切に処理する必要があります。

于 2012-04-15T09:16:28.017 に答える