Nar*_*aki 9 process job-control process-groups
进程组和作业有什么区别?如果我输入,pr * | lpr
那么它既是进程组又是工作?进程组 ID 和作业 ID 之间究竟有什么区别?
编辑:我知道它看起来类似于工作和流程之间的区别是什么?,但略有不同。另外,我没有从这个线程中理解这个概念。
Gil*_*il' 10
一个进程组是UNIX内核的概念。它不经常出现。您可以通过使用负参数调用kill
系统调用或实用程序,向组中的所有进程发送信号。
当一个进程被创建(使用fork
)时,它会保留在与其父进程相同的进程组中。一个进程可以通过调用setpgid
或移动到另一个组中setpgrp
。这通常由 shell 在启动外部进程时执行,然后再执行execve
以加载外部程序。
对于处理组的主要用途是,当你按下Ctrl+C
,Ctrl+Z
或者Ctrl+\
向杀死或暂停在一个终端程序,所述终端将信号发送到一个全过程组中,前台进程组。细节相当复杂,主要是 shell 或内核实现者感兴趣的;POSIX 标准的通用终端接口章节是一个很好的介绍(您确实需要一些 unix 编程背景)。
作业是 shell 的一个内部概念。在简单的情况下,shell 中的每个作业对应于内核中的一个进程组。