会话和进程组在Unix中的用途和含义?

Unix进程具有会话ID,并且是进程组的一部分 – 可以使用setsid()/ getpgrp()等函数进行更改/查询

然而,进程组和会话的概念总是让我无法解释,任何人都可以解释具有不同会话和进程组提供什么意义 – 为什么/何时想创建新会话或在同一会话和/或进程组中放置多个进程?

进程组是可以一次发信号通知的相关进程的集合。

会话是过程组的集合,过程组附接到单个终端设备(称为控制终端)或不附接到任何终端。

会话用于作业控制:会话中的进程组之一是前台进程组,并且可以通过终端控制字符发送信号。您可以将与控制终端的会话视为与该终端上的“登录”相对应。 (守护进程通常通过创建没有任何控制终端的新会话而与任何控制终端脱离关系。)

例如如果从shell运行some_app,shell将为其创建一个新的进程组,并使该进程组成为会话的前台进程组。 (some_app可能会创建一些子进程;认情况下,它们将是同一进程组的一部分。)如果您随后按^ Z,some_app的进程组将发出信号停止它;并且shell的进程组再次切换为前台进程组。然后egbg%1将再次启动some_app的进程组,但保持它在后台运行。

POSIX.1-2008 standard是相当可读的(至少,我想是这样!) – 看看definitions“General Terminal Interface”章的相关章节。

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...