read() と write() ループは私が探しているのと同じくらい良いかもしれませんが、まだ同様の状況がありますか?それとも、予期しない障害物のために実装が不可能ですか?気になる
答え1
「ある fd の内容全体を別の fd にコピー」する従来の Unix システムコールはありません。 「ブロック読み取り、EOFの場合は停止、ブロック書き込み」ループは常にユーザー空間に書き込みます。
最近では、単一のシステム呼び出しで読み取り/書き込みループと同等の操作を実行できるようにするsendfile(2)やsplice(2)など、いくつかの関数が追加されました。これにより、移植性を犠牲にしてパフォーマンスが向上します。 (sendfile は Unices ごとに異なるパラメータをとるので #ifdef が必要です)