2

すべて、冬が来て、plzは暖かく健康を保ちます。仕事についての瞑想中に、私はfddup2の機能についていくつか質問を受けました。ソケットサーバーとクライアントを作成します。サーバーが送信し、クライアントがデータを受信します。しかし、クライアントがサーバーにあるファイルから直接データを読み取れるようにするために、サーバーソケットfdをファイルdfにdup2したいと思います。私は次のように書きます

while(socketdf = accept(...))
{{
 dup2(filefd、socketfd);
}

しかし、それは機能しませんこれは可能ですか?これについて何かアドバイスをいただけますか?ありがとう

4

1 に答える 1

4

dup2()そのようには機能しません-ここでやることになるのは、閉じsocketfdて、のコピーに置き換えることですfilefd

ここでやろうとしているように、ソケットをファイルに直接接続する方法はありません。ファイルからアプリケーションのソケットにデータを「ポンプ」する必要があります。ただし、sendfile()システムコールを使用すると、処理が大幅に簡素化されます。

于 2011-11-11T05:27:56.240 に答える