Shell

如果 shell 正在執行一個程序,當按下 Ctrl+C 時,shell 是否也會收到一個 SIGINT 信號?

  • May 18, 2017

我已經讀到,當您按下時,會向前台程序組Ctrl+C發送一個信號。SIGINT

現在這個問題中公認的答案是:

基本上,所有前台程序(即外殼程序和程序)都會收到您的信號,

我在cat裡面執行過bash,注意到PGIDforbashcat是不同的,所以它們不屬於同一個程序組。

所以當你按 時Ctrl+C,只會cat收到SIGINT信號(所以我引用的答案是錯誤的),我正確嗎?

這個問題是關於 bash 腳本的。您正在以互動方式執行 bash。這對流程組產生了影響:這就是發明流程組的全部原因。程序組的目的是擷取一個互動式啟動任務中涉及的所有程序。因此,互動式 shell 在單獨的程序組中啟動每個作業,而執行腳本的 shell 不會創建新的程序組。

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