Tty

終端中的 ^S 和 ^Z 控製字元有什麼區別?

  • May 23, 2011

使用終端仿真器時,可以使用CTRL-Z或停止目前正在執行的程序CTRL-S。這些信號有什麼區別?

Ctrl-Z實際上確實停止了目前的前台程序,但它與終端仿真器無關。它由您目前正在執行的 shell 處理。Unix 的原始 shell 沒有此功能,因此您可能會發現在某些系統上缺少它,例如引導到單使用者模式的最小嵌入式 Linux 版本。

Ctrl-S並不一定完全停止目前的前台程序。它所做的只是請求作業系統的終端程式碼暫時停止向您的終端發送數據。該程序實際上仍在執行,實際上只要它不填充任何輸出緩衝區,它甚至不會在系統呼叫時被阻塞。Ctrl-S終端輸出暫停功能是一個可以追溯到電傳打字時代的古老事實標準,並且按照慣例在所有 Unixy 作業系統中都受支持,但它可以被禁用 ( ) 或反彈到其他東西。例如,文本編輯器和其他互動式程序經常重新綁定。stty -ixon``Ctrl-S

您可以看到停止後如何重新啟動事物的進一步差異。Ctrl-Q在 a 之後重新啟動終端輸出Ctrl-S,同時重新啟動停止的程序Ctrl-Z需要fg控制 shell 的命令。

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