假设我打开了一个使用 的终端窗口bash
。 所属的进程组bash
是终端的前台进程组。
现在假设我cat
在终端中打开,将会发生的情况是,将创建一个新的进程组,并且该cat
进程组将属于该进程组,这个进程组现在将成为终端的前台进程组。
当cat
终止并执行返回时bash
,所属的进程组bash
将再次成为终端的前台进程组。
我的疑问是:这两次终端的前台进程组是怎么变化的,是bash
那个改变了吗?
答案1
是的。引用Gilles 在 U&L 上的回答:
终端关联的PGID可以由
tcsetpgrp
函数,当 shell 在前台启动一个外部程序或者使用 将一个作业移到前台时,它会调用这个函数fg
。