- Bashで、終了信号が
ここのドキュメントで変更できることを学びました。
しかし、デフォルトでは、どのようにして
stdin入力の終了を通知できますか? - catと
chardetを使用すると、Ctrl+dで終了したことを
信号で送信できることがわかりました。しかし、
Ctrl+dと
Ctrl+ cは、実行中のコマンドの実行を終了する
に似ていることを覚えているようです。だから
私は間違っていますか?
承認された回答:
Ctrl + D 、端末の行の先頭に入力すると、入力の終わりを示します。これはUNIXの意味でのシグナルではありません。アプリケーションが端末から読み取りを行っていて、ユーザーが Ctrl + Dを押したとき 、ファイルの終わりに到達したことがアプリケーションに通知されます(ファイルから読み取っていて最後のバイトを通過した場合と同じように)。
Ctrl + C シグナルSIGINTを送信します。デフォルトでは、SIGINT(割り込みシグナル)はフォアグラウンドアプリケーションを強制終了しますが、アプリケーションはシグナルをキャッチし、別の方法で反応することができます(たとえば、シェル自体がシグナルをキャッチし、入力を開始した行を中止しますが、終了すると、新しいプロンプトが表示され、新しいコマンドラインを待ちます。
stty
を使用して、ファイルの終わりとSIGINTに関連付けられている文字を変更できます。 コマンド、例: stty eof a
a
を作成します ファイルの終わり文字、およびstty intr ^-
SIGINT文字を無効にします。これが役立つことはめったにありません。