如果 shell 正在运行程序,按下 Ctrl+C 时 shell 是否也会收到 SIGINT 信号?

如果 shell 正在运行程序,按下 Ctrl+C 时 shell 是否也会收到 SIGINT 信号?

我读过,当您按下 时Ctrl+CSIGINT就会向前台进程组

现在这里接受的答案问题说:

基本上,您的信号被所有前台进程接收,即 shell 和程序,

我执行了catinside bash,发现PGIDforbashcat是不同的,所以它们不属于同一个进程组。

所以当你按 时Ctrl+C,只会cat收到SIGINT信号(所以我引用的答案是错误的),我对吗?

答案1

这个问题是关于 bash 脚本的。您正在以交互方式运行 bash。这对进程组来说有所不同:这就是发明进程组的全部原因。进程组的目的是捕获一个交互式启动的任务中涉及的所有进程。因此,交互式 shell 在单独的进程组中启动每个作业,而运行脚本的 shell 不会创建新的进程组。

相关内容