改变终端前台进程组的是“bash”吗?

改变终端前台进程组的是“bash”吗?

假设我打开了一个使用 的终端窗口bash。 所属的进程组bash是终端的前台进程组。

现在假设我cat在终端中打开,将会发生的情况是,将创建一个新的进程组,并且该cat进程组将属于该进程组,这个进程组现在将成为终端的前台进程组

cat终止并执行返回时bash所属的进程组bash将再次成为终端的前台进程组

我的疑问是:这两次终端的前台进程组是怎么变化的,是bash那个改变了吗?

答案1

是的。引用Gilles 在 U&L 上的回答

终端关联的PGID可以由 tcsetpgrp 函数,当 shell 在前台启动一个外部程序或者使用 将一个作业移到前台时,它会调用这个函数 fg

相关内容