进程组和作业之间的区别?

Nar*_*aki 9 process job-control process-groups

进程组和作业有什么区别?如果我输入,pr * | lpr那么它既是进程组又是工作?进程组 ID 和作业 ID 之间究竟有什么区别?

编辑:我知道它看起来类似于工作和流程之间的区别是什么?,但略有不同。另外,我没有从这个线程中理解这个概念。

Gil*_*il' 10

一个进程组是UNIX内核的概念。它不经常出现。您可以通过使用负参数调用kill 系统调用实用程序,向组中的所有进程发送信号。

当一个进程被创建(使用fork)时,它会保留在与其父进程相同的进程组中。一个进程可以通过调用setpgid或移动到另一个组中setpgrp。这通常由 shell 在启动外部进程时执行,然后再执行execve以加载外部程序。

对于处理组的主要用途是,当你按下Ctrl+CCtrl+Z或者Ctrl+\杀死或暂停在一个终端程序,所述终端将信号发送到一个全过程组中,前台进程组。细节相当复杂,主要是 shell 或内核实现者感兴趣的;POSIX 标准的通用终端接口章节是一个很好的介绍(您确实需要一些 unix 编程背景)。

作业是 shell 的一个内部概念。在简单的情况下,shell 中的每个作业对应于内核中的一个进程组。