Command-Line
如何發出標準輸入結束的信號
- 在 Bash 中,我了解到結束信號可以通過此處的文件進行更改。但預設情況下,我如何發出
stdin
輸入結束的信號?- 我碰巧發現用
cat
andchardet
,他們的stdin
輸入可以用Ctrl
+表示完成D
。但我似乎記得Ctrl
+D
和Ctrl
+C
類似於結束正在執行的命令的執行。那我錯了嗎?
Ctrl+D
,當在終端的行首鍵入時,表示輸入的結束。這不是 unix 意義上的信號:當應用程序正在從終端讀取並且使用者按下Ctrl+D
時,應用程序會被通知已到達文件末尾(就像它正在從文件中讀取並通過最後一個字節)。
Ctrl+C
確實發送一個信號SIGINT。預設情況下,SIGINT(中斷信號)會殺死前台應用程序,但應用程序可以擷取信號並以某種不同的方式做出反應(例如,shell 本身擷取信號併中止您已經開始鍵入的行,但它沒有t 退出,它會顯示一個新的提示並等待一個新的命令行)。您可以使用命令更改與文件結尾和 SIGINT 關聯的字元
stty
,例如,stty eof a
將a
生成文件結尾字元,並stty intr ^-
禁用 SIGINT 字元。這很少有用。