1


here のようなソケットサーバーを作成しました。telnetと入力ctrl+cしても、サーバーは何もしません。どうsignal(SIGINT,SIG_IGN)
すればいいの?

4

2 に答える 2

2

telnet プログラムは CTRL-C 文字をキャッチし、それを 1 バイト ( \x03) として TCP 接続を介して反対側に送信します。そのバイトをどうするかを決めるのは、受信プログラム次第です。

疑似端末を介してコンソールのような対話性を提供することを意図している「telnet デーモン」によって受信された場合、その組み合わせは、その下で実行されているプロセス (通常はシェル) に対して SIGINT を生成します。

したがって、質問に答えるには、受信した\x03文字を処理して内部的に SIGINT を生成するか、疑似端末で telnetd によって生成および制御されるプロセスとしてプログラム全体を実行することができます。

于 2012-10-30T00:43:50.433 に答える
0

telnet クライアント (SIGINT を受信するプロセス) はそれを処理する必要があります: ローカルで処理する (例: 終了するか、プロンプトを再発行する) か、IAC何か(BRK?) としてサーバーに送信するか、out-バンドデータの。割り込みをサーバーに渡したい場合は、おそらく「telnet IAC」の Google で開始できます。

于 2012-10-30T00:54:13.563 に答える