0
sendfileの問題は、ファイルfdsを使用して2つのテキストファイルをコピーできないことです。 エラーはEINVALです。 //ディスクリプタが有効でないかロックされているか、またはin_fdでmmap()のような操作が使用できません。sendfile()は通常のテキストファイルをコピーできません
これは実際にはどういう意味ですか?
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.
マニュアルページの場合も同様です。今私はstdを使用しています。 C++の方法。 ofstream << ifstream.rdbuf()。 Linux固有のものであっても良い方法はありますか? – siddhusingh
実際はありません。一般に、このファイルをここにコピーするシステムコールを提供するOSはありません。 – geekosaur