CTRL+C 後にコンソールをリセットする理由

CTRL+C 後にコンソールをリセットする理由

一部のコマンドラインインタフェースツールは、キャンセル時に破損したコンソールを返しますCTRL+C。時には、コマンドを実行する前にテキストが表示されないか、グラフィックの問題がある可能性がありますreset

(私はbashを使用しますが、シェルに依存しないことを望んでいます。)

この効果に名前がありますか?この問題の原因は何であり、プログラマはどのようにツールでこれらのことが発生しないのを防ぐことができますか?主なプログラミング言語には、この問題を解決するための戦略はありますか?

ベストアンサー1

コンソールには時々reset(1) (または一部stty(1)コマンド)プロセス(シェルによって起動されたプログラムなど)が終了したときに擬似端末の状態が変わらないためです。

読むttyが公開されました

(私はその取り扱いを見つけました擬似端末pseudottyはLinuxで最も難しい部分です)

主なプログラミング言語には、この問題を解決するための戦略はありますか?

端末を処理し、モードまたは回線規則を変更する正しく機能するプログラムは、競合を避け、適切な呼び出しを発行するように努力する必要があります(参照用語(3)) 端末を正しい状態に設定してください。しかし、図書館のような場所は呪いまたは読書船非常に役立ちます(ただし、クリーンアップルーチンを適切に呼び出す必要があります)。

バラより信号(7)そして信号セキュリティ(7)。コードの競合を避けるのは難しいです。読む未定義の動作

不完全な回避策は、プログラムを実行するシェル関数を定義して実行することですreset(時には不適切な場合があります)。

おすすめ記事