web-dev-qa-db-ja.com

端末が^ Cのような特殊文字をエコーすることがあるのはなぜですか?

端末からGUIプログラムを実行して次のように入力すると Ctrl+C、私はターミナルからエコーを取得します:

^C

アプリケーションに信号が配信されているにもかかわらず(おそらく端末によって処理されるキー)。キャラクターがエコーされるのはなぜですか?

6
locu

これを実行します。これは単なるターミナル設定です。デフォルトでは、入力した内容がすべてエコーされます。

stty -ctlecho

これで、端末はこれらの文字を表示しないように設定されました。

man stty | less +/ctlecho

[-]クレチョ
ハット表記のエコー制御文字( '^ c')

この構成を永続的に保持するには、それを* rcファイルに追加します。 (~/.bashrcなど)。

stty設定を一覧表示するには、コマンドを単独で入力します。

6
Gilles Quenot

Unixスタイルの端末接続は、もともとははるかに遅い(9600 bps以下)接続用に開発されたもので、送信エラーを引き起こす可能性のあるダイヤルアップモデム回線を経由する可能性があります。エコー機能は、アプリケーションが入力を取得する前にTTYドライバーによって生成されますが、アプリケーションは必要に応じてエコー機能を無効にする場合があります。

負荷の高いサーバーに接続したり、低速接続で接続したりする場合、すべての文字をエコーすると、文字がエラーなしで受信されたというフィードバックが得られます。したがって、^C、あなたは Ctrl+C キーストロークはリモートコンピュータによって正しく受信されました。すぐにそれ以上の応答がない場合、問題はコミュニケーションにあるのではないことがわかります。

たとえば、システムがビジー状態で、新しいコマンドプロンプトをすぐに表示できない場合があります。または、中断されたプログラムまたはスクリプトに、終了する前にいくつかのアクション(たとえば、保存されていないデータのバックアップ)を実行するSIGINTハンドラーがあるか、割り込みシグナルを完全に無視している可能性があります。

0
telcoM