参照を使用して終了できないのはなぜですか?

参照を使用して終了できないのはなぜですか?

edこのプログラムは-send breakを使用して終了することはできませんが、代わりにコンソールにエラーメッセージ「?」を出力する最小テキストエディタです。割り込みを受けてすぐに終了しないのはなぜですか?もちろん、ここでは終了するよりも秘密のエラーメッセージが役に立つ理由はありません。この動作により、多くの新規ユーザーが次のような対話を行うことができます。CtrlCed

$ ed
hello
?
help
?
exit
?
quit
?
^C
?
^C
?
?
?
^D
$ su
# rm -f /bin/ed

この悲劇的な無駄は、単にed中断に同意することで簡単に回避できます。

同様の動作を示すもう一つの頑固なプログラムもless無視する理由があまりないようですC-c。なぜこれらのプログラムはプロンプトだけを受け入れないのですか?

ベストアンサー1

Ctrl+C送信知能を知らせる。 SIGINTの一般的な動作は、プログラムの最上位ループに戻り、現在のコマンドをキャンセルし、プログラムが次のコマンドを待つモードに入ることです。非対話型プログラムのみがSIGINTで終了します。

したがってCtrl、+は自然にCedを終了せずに最上位ループに戻るようにします。Ctrl+C現在の入力ラインを停止し、edプロンプトに戻ります。

少ない場合でも同様です。Ctrl+C現在のコマンドを中断し、コマンドプロンプトに戻ります。

歴史的な理由から、edは無視します。信号出口Ctrl+ \)。一般的なアプリケーションでは、有効になっている場合はコアダンプを使用してこの信号をキャプチャし、それ自体を終了することを許可しないでください。

おすすめ記事