Command-Line

如何發出標準輸入結束的信號

  • November 19, 2021
  1. 在 Bash 中,我了解到結束信號可以通過此處的文件進行更改。但預設情況下,我如何發出stdin輸入結束的信號?
  2. 我碰巧發現用catand chardet,他們的stdin輸入可以用Ctrl+表示完成D。但我似乎記得Ctrl+DCtrl+C類似於結束正在執行的命令的執行。那我錯了嗎?

Ctrl+D,當在終端的行首鍵入時,表示輸入的結束。這不是 unix 意義上的信號:當應用程序正在從終端讀取並且使用者按下Ctrl+D時,應用程序會被通知已到達文件末尾(就像它正在從文件中讀取並通過最後一個字節)。

Ctrl+C確實發送一個信號SIGINT。預設情況下,SIGINT(中斷信號)會殺死前台應用程序,但應用程序可以擷取信號並以某種不同的方式做出反應(例如,shell 本身擷取信號併中止您已經開始鍵入的行,但它沒有t 退出,它會顯示一個新的提示並等待一個新的命令行)。

您可以使用命令更改與文件結尾和 SIGINT 關聯的字元stty,例如,stty eof aa生成文件結尾字元,並stty intr ^-禁用 SIGINT 字元。這很少有用。

引用自:https://unix.stackexchange.com/questions/16333