- Bashでは、ここのドキュメントから終了信号を変更できることを学びました。しかし、基本的に入力の終わりを知らせる方法は何ですか
stdin
? cat
偶然にandを使用すると、+表記でchardet
入力を実行できることがわかりましたstdin
。ところで、+と+は、実行中の命令の実行を終了するのと似ていることを覚えているようです。それで私は間違っていますか?CtrlDCtrlDCtrlC
答え1
Ctrl+D、端末の行の先頭に入力した場合、入力が終了したことを示します。これはないシグナルUnixの意味では、アプリケーションが端末から読み取り、ユーザーがを押すと、ファイルの最後に到達したというCtrl+D通知がアプリケーションに渡されます(ファイルの最後のバイトを読み取って渡したかのように)。
Ctrl+C信号を送り、知能を知らせる。デフォルトでは、SIGINT(割り込み信号)はフォアグラウンドアプリケーションを終了しますが、アプリケーションは信号をキャプチャして別の方法で応答することができます(たとえば、シェル自体が信号をキャプチャして入力し始めた行を中断しますが、そうしません。 )終了しない場合は、新しいプロンプトが表示され、新しいコマンドラインが表示されるのを待ちます。
以下を使用して、ファイルの終わりとSIGINTに関連する文字を変更できます。stty
などのコマンドはファイルの終わり文字をstty eof a
生成し、SIGINT文字を無効にします。これはほとんど役に立ちません。
a
stty intr ^-
答え2
答え3
追加情報の検索中にこの問題が検出されました。提供された答えは正確ですが、内部の仕事に関与していると思います。
単純で非技術的な答えは、Ctrl+ DSTDINファイルを終了し、Ctrl+Cアクティブアプリケーションを終了することです。
どちらもキーボードドライバで処理され、キーボードから読み取られるすべてのプログラムに適用されます。
違いを確認するには、コマンドラインシェルを起動し、wc
引数なしでコマンドを入力してください。これでSTDIN入力を待っています。文章を入力して「返却」してください。これで、Ctrl+を入力して行、単語、および文字数を入力して入力しますD。wc
同じことを行いますが、Ctrl+と入力しますC。 wcは出力なしで終了します。