Shell
如果 shell 正在執行一個程序,當按下 Ctrl+C 時,shell 是否也會收到一個 SIGINT 信號?
我已經讀到,當您按下時,會向前台程序組
Ctrl+C
發送一個信號。SIGINT
現在這個問題中公認的答案是:
基本上,所有前台程序(即外殼程序和程序)都會收到您的信號,
我在
cat
裡面執行過bash
,注意到PGID
forbash
和cat
是不同的,所以它們不屬於同一個程序組。所以當你按 時
Ctrl+C
,只會cat
收到SIGINT
信號(所以我引用的答案是錯誤的),我正確嗎?
這個問題是關於 bash 腳本的。您正在以互動方式執行 bash。這對流程組產生了影響:這就是發明流程組的全部原因。程序組的目的是擷取一個互動式啟動任務中涉及的所有程序。因此,互動式 shell 在單獨的程序組中啟動每個作業,而執行腳本的 shell 不會創建新的程序組。