Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Linux で read() syscall を使用して任意のソース (ファイル、ソケット、パイプ) から読み取る場合、(ブロッキング モードで) 返すことができる最小データ量はありますか? または、syscall は 1 バイトを返すことさえできますか?
パイプから 1 つの int (4 または 8 バイト) を読み取りたい場合、read() の戻り値をチェックして、受信したバイト数が sizeof(int) バイト未満かどうかを確認する必要がありますか?
最小値がブロック サイズであるブロック モード デバイスを除いて、最小値はありません。
常に戻り値を確認する必要があります。物事が壊れる可能性があるため、反対側が常に完璧であると想定するのではなく、破損を計画し、短い読み取りとエラーを適切に処理する必要があります。