0

sendfileの問題は、ファイルfdsを使用して2つのテキストファイルをコピーできないことです。エラーはEINVALです。//記述子が無効またはロックされていないか、mmap()のような操作をin_fdで使用できません。

これは本当にどういう意味ですか?

sendfile(man sendfile)のmanページから、このステートメントを見つけました。2つの通常のファイルをコピーすることが機能するかどうかはわかりません。

現在(Linux 2.6.9):in_fdは、mmap()のような操作をサポートするファイルに対応している必要があります(つまり、ソケットにすることはできません)。out_fdはソケットを参照する必要があります。

   Applications may wish to fall back to read(2)/write(2) in the case where sendfile() fails with EINVAL or ENOSYS.
4

1 に答える 1

1

背後にsendfile()ある考え方は、ソケットを介してファイルをすばやく送信することです(Webサーバーを考えてください)。通常のファイルはmmap()編集できますが、ソケットではないため、通常のファイルを宛先として渡すと爆発します。

于 2011-03-23T06:23:13.207 に答える