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

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

进程组和作业有什么区别?如果我输入,pr * | lpr那么它既是一个进程组也是一个作业吗?进程组 ID 和作业 ID 之间到底有什么区别?

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

答案1

A进程组是一个unix内核概念。它并不经常出现。您可以通过调用以下命令向组中的所有进程发送信号kill 系统调用或者公用事业带有否定的论点。

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

进程组的主要用途是当您按Ctrl+C,Ctrl+Z或者Ctrl+\终止或暂停终端中的程序,终端向整个进程组发送信号,前台进程组。细节相当复杂,并且 shell 或内核实现者最感兴趣;这通用终端接口POSIX 标准的章节是一个很好的介绍(您确实需要一些 UNIX 编程背景)。

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

相关内容