进程组必须有一个正在运行的领导进程吗?

2023-11-22

在类 Unix 操作系统中,如果一个进程'pid和它的pgid相等,则该进程是进程组的领导者。

但是,如果进程领导者已经退出,并且同组中的其他进程仍在运行,那么谁是继任的领导者进程?


没有继任领导者:一旦流程组领导者退出,该组就失去了领导权。没有什么要求流程组有领导者,没有领导者也完全可以,并且您仍然可以使用以下命令向组中的每个元素发送信号kill(2).

当领导者退出时到底会发生什么取决于组中进程的状态以及该组是否归类为孤立进程组。

首先我们来看看什么是孤儿群体。

POSIX 将孤立进程组定义为这样一个组,其中属于该组的每个进程的父进程要么是同一组的成员,要么是另一个会话的一部分。

换句话说,只要组中至少有一个进程的父进程位于不同进程组但位于同一会话中,该进程组就不是孤立进程。

这个定义一开始可能看起来很奇怪,但是这背后有一个基本原理,(希望)很快就会清楚。

那么为什么知道一个群体是否是孤儿很重要呢?由于进程已停止。如果一个进程组是孤立的,并且该组中至少有一个进程已停止(例如,它被挂起SIGSTOP or SIGTSTP),那么 POSIX.1 要求发送孤立组中的每个进程SIGHUP其次是SIGCONT。这样做的原因是为了避免进程永远停止:考虑会话领导者和进程组领导者退出的情况,并且组留下一个停止的进程。由于父级处于另一个会话中,因此无权发送它SIGCONT,因此该进程将永远不会再次运行。

OTOH,如果父进程位于同一会话但位于不同的组中,那么它有可能会用以下命令发出已停止进程的信号:SIGCONT,因此该组不被视为孤立进程,并且无需强制唤醒停止的进程。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

进程组必须有一个正在运行的领导进程吗? 的相关文章

随机推荐

  • SSRS 的性能问题[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 大家好 最近我加入了一家公司 他们给我分配的一项任务是提高现有 SSRS 报告的性能 我
  • 历史记录replaceState不再在Chrome中为本地文件工作

    我正在使用 window history replaceState 更改使用 file C 访问的 HTML 文件的查询字符串 这曾经适用于 Chrome Internet Explorer 和 FireFox 但不再适用于 Chrome
  • 如何从 Java 漂亮地打印 XML?

    我有一个包含 XML 的 Java 字符串 没有换行或缩进 我想将其转换为具有格式良好的 XML 的字符串 我该怎么做呢 String unformattedXml
  • 如何解决DTS_E_OLEDBERROR。在ssis中

    在一个ssis包中由数据流任务组成 包含 OLEDB 源和 OLDB 目标 provider 是 sql 本机客户端 这曾经运行良好 但现在出现错误 如下所示 请告诉我如何解决它 将其更改为ado net 操作系统 windows 7 pr
  • 使用 Python 读取文件并绘制 CDF

    我需要读取带有时间戳 以秒为单位 的长文件 并使用 numpy 或 scipy 绘制 CDF 绘图 我确实尝试过使用 numpy 但似乎输出不是它应该的样子 下面的代码 任何建议表示赞赏 import numpy as np import
  • 离散数据拟合:负二项式、泊松分布、几何分布

    在 scipy 中 不支持使用数据拟合离散分布 我知道有很多关于这个的话题 例如 如果我有一个如下所示的数组 x 2 3 4 5 6 7 0 1 1 0 1 8 10 9 1 1 1 0 0 我无法申请这个数组 from scipy sta
  • 如何调整一个克隆的形状/尺寸以影响场景视图中的所有其他克隆

    我想通过调整一个来更改 调整场景视图中多个克隆对象的形状 尺寸 该对象可以是需要扩展的四边形或线渲染器 例如 当一个游戏对象线渲染器在场景视图中扩展 使用鼠标 时 所有其他克隆都会受到影响 我知道在克隆一个对象之前调整它的形状 尺寸要简单得
  • LINQ 查询返回第一个结果的多个副本

    我在数据库中定义了一个视图 archiveContentPreviews 它将多个表连接在一起 并且在 Linq 中它有一个实体键 ArchiveID 我想使用以下简单查询来查询此视图 var x from fields in entiti
  • 纵向数据

    I ve been working with the R Orthodont dataset in the nlme package Just use install packages nlme library nlme head Orth
  • 比较两个 T-SQL 表的差异

    我有同一个数据库的两个实例 第一个数据库代表今天的数据 第二个数据库代表 6 个月前的数据 我需要找到特定表中条目子集的差异 对于两个表中都有 id 的条目 我想找到一种方法来仅查看不相同的行 有任何想法吗 Thanks SELECT t1
  • 在 .NET 控制台应用程序中,是否可以让一行文本始终在控制台中保持可见?

    我正在考虑向控制台应用程序添加一个简单的带宽监视器 我想知道是否可以使控制台窗口中的一行始终可见 我可以手动设置一些东西 将新的控制台输出传递到一个方法中 该方法将获取控制台的内容 清除控制台 在第一行添加带宽数据 然后将以前的每行信息重写
  • 用Java处理大数据结构

    我正在开发一个需要处理非常大的矩阵的 Java 应用程序 例如两个1000万 1000万的矩阵相乘 当然 Java 堆甚至没有足够的空间来存储这些矩阵之一 我应该怎么办 我应该使用数据库来存储我的矩阵并将每个需要的部分带入内存并将其逐个相乘
  • Phoenix 将 404 和 500 渲染为 JSON

    我开始了一个 Phoenix 项目 但没有使用 no html选项 现在我正在努力确保404 and 500错误呈现为 JSON 该项目在凤凰城启动1 1 0 并已更新为1 1 4 我已经修改了config config exs file
  • 为 OSGi 包寻找良好的开发环境 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我目前正在研究 OSGi 包的开发环境领域 我的目标是找到一种方法来轻松开发 测试和调试我将要编码的捆绑包 此外 我还有一些 文化 要求 我希望能够
  • 玩2.3隐式json转换导致空指针异常

    我正在尝试将 json 解析到我的案例类中DealFormMap case class DealFormMap limit Option Int filter Option DealFormFilterMap case class Deal
  • 在 apache localhost 服务器上使用 .htaccess 文件

    好吧 我已经启动了 Apache localhost 服务器并使用 PHP 和 MySql 运行 现在我希望能够使用 htaccess文件以及使用RewriteRule 但我不知道该把它放在哪里 我有这些目录 C dev progsApac
  • 如何在Python中安装VLC模块

    我尝试使用 PIP 安装 VLC 但出现以下错误 pip install VLC Downloading unpacking vlc Cannot fetch index base URL https pypi python org sim
  • Python:如何保存 os.system 的输出[重复]

    这个问题在这里已经有答案了 在 Python 中 如果我使用 wget 使用 os system wget 下载文件 它会在屏幕上显示如下 Resolving Connecting to HTTP request sent awaiting
  • 流畅断言:比较两个数字集合的近似值

    我有两个双精度数组 有没有办法使用 FluentAssertions 使用 BeApproximately 技术逐个元素地比较数组 一个范围值足以满足整个数组的需要 Example double source 10 01 8 01 6 01
  • 进程组必须有一个正在运行的领导进程吗?

    在类 Unix 操作系统中 如果一个进程 pid和它的pgid相等 则该进程是进程组的领导者 但是 如果进程领导者已经退出 并且同组中的其他进程仍在运行 那么谁是继任的领导者进程 没有继任领导者 一旦流程组领导者退出 该组就失去了领导权 没