stdin入力の終わりを知らせる方法

stdin入力の終わりを知らせる方法
  1. Bashでは、ここのドキュメントから終了信号を変更できることを学びました。しかし、基本的に入力の終わりを知らせる方法は何ですかstdin
  2. cat偶然にandを使用すると、+表記でchardet入力を実行できることがわかりましたstdin。ところで、+と+は、実行中の命令の実行を終了するのと似ていることを覚えているようです。それで私は間違っていますか?CtrlDCtrlDCtrlC

答え1

Ctrl+D、端末の行の先頭に入力した場合、入力が終了したことを示します。これはないシグナルUnixの意味では、アプリケーションが端末から読み取り、ユーザーがを押すと、ファイルの最後に到達したというCtrl+D通知がアプリケーションに渡されます(ファイルの最後のバイトを読み取って渡したかのように)。

Ctrl+C信号を送り、知能を知らせる。デフォルトでは、SIGINT(割り込み信号)はフォアグラウンドアプリケーションを終了しますが、アプリケーションは信号をキャプチャして別の方法で応答することができます(たとえば、シェル自体が信号をキャプチャして入力し始めた行を中断しますが、そうしません。 )終了しない場合は、新しいプロンプトが表示され、新しいコマンドラインが表示されるのを待ちます。

以下を使用して、ファイルの終わりとSIGINTに関連する文字を変更できます。sttyなどのコマンドはファイルの終わり文字をstty eof a生成し、SIGINT文字を無効にします。これはほとんど役に立ちません。 astty intr ^-

答え2

2番目のポイントは、2つの完全に異なる2つの組み合わせです。

  • Ctrl+C 実行中のプロセスに終了信号を送信します。
  • Ctrl+D 送信転送終了特徴。

あなたは後者を探しています。

答え3

追加情報の検索中にこの問題が検出されました。提供された答えは正確ですが、内部の仕事に関与していると思います。

単純で非技術的な答えは、Ctrl+ DSTDINファイルを終了し、Ctrl+Cアクティブアプリケーションを終了することです。

どちらもキーボードドライバで処理され、キーボードから読み取られるすべてのプログラムに適用されます。

違いを確認するには、コマンドラインシェルを起動し、wc引数なしでコマンドを入力してください。これでSTDIN入力を待っています。文章を入力して「返却」してください。これで、Ctrl+を入力して行、単語、および文字数を入力して入力しますDwc

同じことを行いますが、Ctrl+と入力しますC。 wcは出力なしで終了します。

関連情報