Unix进程具有会话ID,并且是进程组的一部分 – 可以使用setsid()/ getpgrp()等函数进行更改/查询。
然而,进程组和会话的概念总是让我无法解释,任何人都可以解释具有不同会话和进程组提供什么意义 – 为什么/何时想创建新会话或在同一会话和/或进程组中放置多个进程?
进程组是可以一次发信号通知的相关进程的集合。
原文链接:https://www.f2er.com/bash/390837.html会话是过程组的集合,过程组附接到单个终端设备(称为控制终端)或不附接到任何终端。
会话用于作业控制:会话中的进程组之一是前台进程组,并且可以通过终端控制字符发送信号。您可以将与控制终端的会话视为与该终端上的“登录”相对应。 (守护进程通常通过创建没有任何控制终端的新会话而与任何控制终端脱离关系。)
例如如果从shell运行some_app,shell将为其创建一个新的进程组,并使该进程组成为会话的前台进程组。 (some_app可能会创建一些子进程;默认情况下,它们将是同一进程组的一部分。)如果您随后按^ Z,some_app的进程组将发出信号停止它;并且shell的进程组再次切换为前台进程组。然后egbg%1将再次启动some_app的进程组,但保持它在后台运行。
POSIX.1-2008 standard是相当可读的(至少,我想是这样!) – 看看definitions和“General Terminal Interface”章的相关章节。