15-进程组和shell任务控制
2.13 进程组和shell任务控制
shell执行的每个程序都会在一个新进程内发起。比如,shell创建了3个进程来执行以下管道命令(在当前的工作目录下,根据文件大小对文件进行排序并显示):
除Bourne shell以外,几乎所有的主流shell都提供了一种交互式特性,名为任务控制。该特性允许用户同时执行并操纵多条命令或管道。在支持任务控制的shell中,会将管道内的所有进程置于一个新进程组或任务中。(如果情况很简单,shell命令行只包含一条命令,那么就会创建一个只包含单个进程的新进程组。)进程组中的每个进程都具有相同的进程组标识符(以整数形式),其实就是进程组中某个进程(也称为进程组组长process group leader)的进程ID。
内核可对进程组中的所有成员执行各种动作,尤其是信号的传递。如下节所述,支持任务控制的shell会利用这一特性,以挂起或恢复执行管道中的所有进程。