我读过,当您按下 时Ctrl+C
,SIGINT
就会向前台进程组。
现在这里接受的答案问题说:
基本上,您的信号被所有前台进程接收,即 shell 和程序,
我执行了cat
inside bash
,发现PGID
forbash
和cat
是不同的,所以它们不属于同一个进程组。
所以当你按 时Ctrl+C
,只会cat
收到SIGINT
信号(所以我引用的答案是错误的),我对吗?
答案1
这个问题是关于 bash 脚本的。您正在以交互方式运行 bash。这对进程组来说有所不同:这就是发明进程组的全部原因。进程组的目的是捕获一个交互式启动的任务中涉及的所有进程。因此,交互式 shell 在单独的进程组中启动每个作业,而运行脚本的 shell 不会创建新的进程组。