3

大きなファイルを送信する必要があるWebサーバー(C)をプログラミングしています。私の質問は次のとおりです。2 つのシステムコールの主な違いは何ですか:writesendfile. sendfileソケットシステムバッファのサイズに依存しますか? write私が要求したよりも書き込みが少ないことが多いことに気付きました。

たとえば、1 つのファイルに対して多くの要求があった場合: ファイルを開いてメモリにコピーして使用する必要がありますか?それともクライアントごとwriteに行うことができますか?sendfile

すべての回答に感謝します。

4

1 に答える 1

6

sendfile(2)をお読みください。

sendfile()あるファイル記述子と別のファイル記述子の間でデータをコピーします。このコピーはカーネル内で行われるため、(2) と(2) の組み合わせ (ユーザー空間との間でデータをやり取りする必要がある)sendfile()よりも効率的です。readwrite

戻り値に関して、write/ read/senfile呼び出しのいずれも、データのブロック全体が書き込まれ、読み取られ、送信されることを保証しません。

于 2010-04-30T10:13:47.103 に答える