1

(x)inetd はほとんどのデーモンと同じようにaccept()機能し、監視しているポートに接続するとソケットが作成されると思います。しかし、どういうわけか、対象のサービス プログラムを処理する前に、fork()このexec()双方向ソケットを 3 つの標準 I/O 記述子である STDIN、STDOUT、および STDERR に変換することができます。

私は自分のバージョンの inetd をロールバックせずにこの動作を無効にする方法を尋ねてきましたが、成功しませんでした。ファイル記述子 0、1、および 2 を単一のソケットに再「結合」する方法の手がかりになる可能性があるため、この方法で質問することにしました。

サービス プログラムが単一のソケットを介して双方向に通信できるようにしたい理由は、単一の双方向ソケットに基づく I/O インフラストラクチャを使用する必要があるためです。

4

1 に答える 1

0

inet.dサーバーへの受信データはstdinにマップされ、 inet.dハンドラーのfprintf(stdout) & fprintf(stderr)は1 つのストリームに結合されてクライアントに送り返されます。

ここでの問題は、telnet クライアントが stdout ストリームと stderr ストリームを区別できないことです。必要に応じて、オプションを提供するtelnetの代わりにsshを使用します。

于 2013-09-03T09:34:53.783 に答える