一部のコマンドラインインタフェースツールは、キャンセル時に破損したコンソールを返しますCTRL+C
。時には、コマンドを実行する前にテキストが表示されないか、グラフィックの問題がある可能性がありますreset
。
(私はbashを使用しますが、シェルに依存しないことを望んでいます。)
この効果に名前がありますか?この問題の原因は何であり、プログラマはどのようにツールでこれらのことが発生しないのを防ぐことができますか?主なプログラミング言語には、この問題を解決するための戦略はありますか?
ベストアンサー1
コンソールには時々reset(1)
(または一部stty(1)
コマンド)プロセス(シェルによって起動されたプログラムなど)が終了したときに擬似端末の状態が変わらないためです。
読むttyが公開されました。
(私はその取り扱いを見つけました擬似端末pseudottyはLinuxで最も難しい部分です)
主なプログラミング言語には、この問題を解決するための戦略はありますか?
端末を処理し、モードまたは回線規則を変更する正しく機能するプログラムは、競合を避け、適切な呼び出しを発行するように努力する必要があります(参照用語(3)) 端末を正しい状態に設定してください。しかし、図書館のような場所は呪いまたは読書船非常に役立ちます(ただし、クリーンアップルーチンを適切に呼び出す必要があります)。
バラより信号(7)そして信号セキュリティ(7)。コードの競合を避けるのは難しいです。読む未定義の動作。
不完全な回避策は、プログラムを実行するシェル関数を定義して実行することですreset
(時には不適切な場合があります)。