父进程如何通过调用_exit的子进程的wait来获取终止状态

2023-12-26

我已阅读以下声明。

给 _exit() 的 status 参数定义了终止状态 该进程,当该进程的父进程可用时,该进程可用 调用 wait()。

进程总是由 _exit() 成功终止(即,_出口() 一去不复返).

Question

If _exit不返回,父进程如何获取终止状态 从子进程通过wait?


每当进程退出时(无论是否通过调用 _exit(int Exit_Status) ),内核都会向其父进程发送 SIGCHLD 函数。家长可以选择

     1. Ignore the incoming signal
     2. Catch it by installing a signal handler

具体来说,父进程可以通过调用 wait() 或 waitpid() 函数来捕获退出状态。在这种情况下,LSB 可供父级使用。具体状态可以通过如下方式获知

    int status;
    wpid = waitpid(child_pid, &status, WUNTRACED);

由于只有最后 8 位可用,因此通过与 255 进行按位与运算来屏蔽高位是合乎逻辑的。系统定义的宏会为您完成此操作

   WEXITSTATUS(status);

因此,为了获取子状态 - 您可以在 waitpid 语句之后使用

   printf("child exited, status=%d\n", WEXITSTATUS(status));

忽略 SIGCHLD 可能会导致创建僵尸(失效)进程。为 SIGCHLD 设置 SA_NOCLDWAIT 标志不会在内核获取僵尸时产生僵尸。然而,代码不可移植,最好使用 wait 系统调用。

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

父进程如何通过调用_exit的子进程的wait来获取终止状态 的相关文章

  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • 为什么大多数 C 开发人员使用 Define 而不是 const? [复制]

    这个问题在这里已经有答案了 在许多程序中 define与常量具有相同的用途 例如 define FIELD WIDTH 10 const int fieldWidth 10 我通常认为第一种形式优于另一种形式 它依赖于预处理器来处理基本上是
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • 查找哪个程序运行另一个程序

    我有一个 NAS 运行在 Redhat Linux 的有限版本上 我按照指示破解了它 这样我就可以访问 shell 这很有帮助 我还做了一些修改 其他人也做过修改 除了一个问题之外 它们似乎都工作得很好 不知何故 每隔 22 天 系统就会关
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • 如何识别 WPF 文本框中的 ValidationError 工具提示位置

    我添加了一个箭头来指示工具提示中的文本框 当文本框远离屏幕边缘时 这非常有效 但是当它靠近屏幕边缘时 工具提示位置发生变化 箭头显示在左侧 Here is the Image Correct as expected since TextBo
  • 如何将“外部模板”与由同一类中的模板化成员使用的嵌套类一起使用?

    首先 一些背景信息 我尝试以 Herb Sutter 在他的解决方案中介绍的方式使用 Pimpl 习语 得到了 101 http herbsutter com gotw 101 这在头文件中看起来像这样 include pimpl h h
  • 即使手动设置显示环境变量后,WSL Ubuntu 也会显示“错误:无法打开显示”

    我在 WSL Ubuntu 上使用 g 我使用 git 克隆了 GLFW 存储库 使用了ccmake命令配置并生成二进制文件 然后使用make在 build 目录中最终创建 a文件 我安装了所有OpenGL相关的库 usr ld 我不记得我
  • 在 2D 中将一个点旋转另一个点

    我想知道当一个点相对于另一个点旋转一定角度时如何计算出新的坐标 我有一个块箭头 想要将其相对于箭头底部中间的点旋转角度 theta 这是允许我在两个屏幕控件之间绘制多边形所必需的 我无法使用和旋转图像 从我到目前为止所考虑的情况来看 使问题
  • 将数据打印到文件

    我已经超载了 lt lt 运算符 使其写入文件并写入控制台 我已经为同一个函数创建了 8 个线程 并且我想输出 hello hi 如果我在无限循环中运行这个线程例程 文件中的o p是 hello hi hello hi hello hi e
  • 生产代码中的 LRU 实现

    我有一些 C 代码 需要使用 LRU 技术实现缓存替换 目前我知道两种实现LRU缓存替换的方法 每次访问缓存数据时使用时间戳 最后比较替换时的时间戳 使用缓存项的堆栈 如果最近访问过它们 则将它们移动到顶部 因此最后底部将包含 LRU 候选
  • 如何在c#中的内部类中访问外部类的变量[重复]

    这个问题在这里已经有答案了 我有两个类 我需要声明两个类共有的变量 如果是嵌套类 我需要访问内部类中的外部类变量 请给我一个更好的方法来在 C 中做到这一点 示例代码 Class A int a Class B Need to access
  • 如何使用 GOPATH 的 Samba 服务器位置?

    我正在尝试将 GOPATH 设置为共享网络文件夹 当我进入 export GOPATH smb path to shared folder I get go GOPATH entry is relative must be absolute
  • 当我“绘制”线条时,如何将点平均分配到 LineRenderer 的宽度曲线?

    我正在使用线条渲染器创建一个 绘图 应用程序 现在我尝试使用线条渲染器上的宽度曲线启用笔压 问题在于 AnimationCurve 的 时间 值 水平轴 从 0 标准化为 1 因此我不能在每次添加位置时都在其末尾添加一个值 除非有一个我不知
  • 如何一步步遍历目录树?

    我发现了很多关于遍历目录树的示例 但我需要一些不同的东西 我需要一个带有某种方法的类 每次调用都会从目录返回一个文件 并逐渐遍历目录树 请问我该怎么做 我正在使用函数 FindFirstFile FindNextFile 和 FindClo
  • System.Runtime.InteropServices.COMException(0x80040154):[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我在 C 项目中遇到异常 System Runtime InteropServices COMException 0x80040154 检
  • 如何更改 Apache 服务器的根目录? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何更改 Apache 服务器的文档根目录 我基本上想要localhost从 来 users spencer projects目录而不是
  • 运算符“==”不能应用于“int”和“string”类型的操作数

    我正在编写一个程序 我想到了一个数字 然后计算机猜测了它 我一边尝试一边测试它 但我不断收到不应该出现的错误 错误是主题标题 我使用 Int Parse 来转换我的字符串 但我不知道为什么会收到错误 我知道它说 不能与整数一起使用 但我在网
  • 双精度类型二维多维数组的 pinvoke 编组作为 c# 和 c++ 之间的输入和输出

    我有以下我正在尝试解决的双物质类型的 2d 多维数组的 c 和 c pinvoke 编组 我已经查看了以下热门内容以获得我目前拥有的内容使用双精度数组进行 P Invoke 在 C 和 C 之间编组数据 https stackoverflo
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项

随机推荐

  • React select onChange 不起作用

    JsFiddle https jsfiddle net 69z2wepo 9956 https jsfiddle net 69z2wepo 9956 我在渲染函数中返回一个选择元素react js code 但每当我改变select值 函数
  • Firebase on 和once 有何区别?

    i am facing problems with understanding more about on and once in firebase API Assume I have this DB structure When I li
  • 如何使用整个训练示例来估计 sklearn RandomForest 中的类概率

    我想使用 scikit learn RandomForestClassifier 来估计给定示例属于一组类的概率 当然是在事先训练之后 我知道我可以使用以下方法获得类别概率predict proba http scikit learn or
  • 48 位/6 字节长的时间戳格式是什么?

    我有一个文件的时间戳格式我不明白 我无权访问创建该文件的代码 并且它不是标准格式 因此我在十六进制编辑器中逐段进行查看 并且我发现了我无法找到的格式的时间戳查找有关的信息 这是一个 48 位数字 其中 12 位表示年份 从 0 开始 4 位
  • 参数和NULL

    我在使用 RPostgres 和 RPostgreSQL 将 NULL 作为 INSERT 参数查询传递时遇到问题 在 PostgreSQL 中 create table foo ival int tval text bval bytea
  • Angular:strictTemplates - 如何正确分配变量

    我在我的Sample html某处定义的
  • mysql innodb 事务并发

    我有3张桌子 Products 产品编号最大可销售产品数可以销售给个人的最大产品数 购买 user id产品编号数量 预订 产品编号 user id数量 希望你能理解这个结构 现在 当用户尝试购买产品时 我必须检查 max products
  • 防止 QDockWidget 自动调整大小行为

    Qt 5 5 0 在我的应用程序中 我有一个 QGraphicsView 作为主要小部件和一个 QDockWidget 作为属性 目标是让用户在图形视图中选择一个项目 并根据该项目显示该项目的适当属性 我通过使用属性管理器小部件来实现此目的
  • Gunicorn 工人创建僵尸进程

    这不是一个真正的问题 但我确实想了解发生了什么 以及为什么会创建这些僵尸进程 还想看看是否有针对这种事情的好的做法 现在我做kill HUP在主 Gunicorn 进程上 它会摆脱僵尸进程 我会自动kill HUP每天早上进行日志轮换 我想
  • Excel 求解器忽略 VBA 中的约束

    我正在尝试使用求解器找到简单投资组合的最大回报 在工作表中直接使用 Solver 可以正常工作 但在 VBA 中设置命令时则不然 相反 正如您从屏幕截图中看到的 它忽略了其中一个约束 T10 中计算的权重总和应 1 有趣的是 如果我将第三行
  • cx_Freeze 帮助:有没有办法不打开控制台?

    我正在尝试将 python 游戏 用 pygame 制作 转换为 Windows 的 exe 文件 我使用 cx Freeze 进行了操作 那里没有问题 问题是 当我启动 myGame exe 时 它 会打开正常的 Pygame 窗口和控制
  • 如何清空 BlockingCollection

    我有一个线程将项目添加到BlockingCollection 在我正在使用的另一个线程上foreach var item in myCollection GetConsumingEnumerable 如果出现问题 我想打破我的 foreac
  • Vimscript:列出的缓冲区数量

    在我的 vim 脚本中 我需要获取所有被视为列出 可列出的缓冲区的计数 即所有执行此操作的缓冲区 not具有未列出的 u 属性 推导该值的推荐方法是什么 你可以使用bufnr 获取最后一个缓冲区的编号 然后创建一个 列出从 1 到该数字并过
  • 使用指针嵌套 std::map

    我在地图内使用地图 并希望访问第二个地图中的特定成员 std map
  • 在Web Api中使用Postman授权属性认证

    我正在使用 RESTful 服务 并发现 Postman 是 GET POST 和测试 API 的最佳插件之一 我在邮递员中找到基本身份验证 无身份验证 DIgest Auth OAuth AWS 如何测试授权控制器和方法 我知道授权属性检
  • 为什么这个SQL语句很慢?

    我有一个包含大约 100 万条记录的表 运行 SQL Server 2008 Web 我有一个搜索例程 尝试匹配产品代码和产品描述 但在某些情况下 速度非常慢 下面是 精简的 sql 语句 WITH AllProducts AS SELEC
  • 当进行相同的 PDO 查询(参数不断变化)时,我是每次都调用prepare(),还是只调用一次?

    我正在尝试学习如何使用 PDO 并且需要帮助理解一些内容 我一直读到使用 PDO 的最大好处之一是它比mysql 当一遍又一遍地进行类似的查询时 我需要进行一个完全相同的查询 只是绑定参数每次都会改变 但查询的结构是相同的 所以 这是我的问
  • 如何覆盖 Riverpod StateNotifier 的状态以进行测试

    我想覆盖我的StateNotifierProvider手动声明以进行测试 可以使用以下方式覆盖提供者ProviderContainer or ProviderScope 但它只提供了覆盖通知者的选项 而不是状态 我的问题是我应该如何覆盖状态
  • Jquery图像叠加?

    我希望使用 jquery 将右上角的图像覆盖在另一张图像上 基本上 当用户的鼠标悬停在图像上方时 我希望第二个图像出现在右上角的另一张图像上方 然后当用户停止悬停在图像上时消失 我如何用 Jquery 实现这一点 Senad 是很正确的 你
  • 父进程如何通过调用_exit的子进程的wait来获取终止状态

    我已阅读以下声明 给 exit 的 status 参数定义了终止状态 该进程 当该进程的父进程可用时 该进程可用 调用 wait 进程总是由 exit 成功终止 即 出口 一去不复返 Question If exit不返回 父进程如何获取终