1

sendfile.hを必要とするCygwinでいくつかのCコードをコンパイルしようとしています。コンパイルしようとすると、

fatal error: sys/sendfile.h: No such file or directory
compilation terminated.

どうすればこれを解決できますか?Linuxプラットフォームに移行する必要がありますか?Cygwinにgcc4.5をインストールしています。

4

2 に答える 2

2

言及されたコメントのように、しかし、 sendfile(2)sendfileのmanページからのPOSIXではありません

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

つまり、基本的にはread()が後に続くwrite()ので、自分で実装するのは比較的簡単です。

于 2012-11-01T18:03:09.930 に答える
0

私は削除しました

#include <sys/sendfile.h>

書き直します

sendfile(write_fd, read_fd, &offset, stat_buf.st_size);

read(read_fd, &offset, stat_buf.st_size);
write(write_fd, &offset, stat_buf.st_size);

そしてそれはうまくいきます。ありがとう。

于 2019-08-04T13:43:40.090 に答える