gpt4 book ai didi

linux - 什么信号(SIGCHLD,SIG_DFL);意思?

转载 作者:太空狗 更新时间:2023-10-29 11:32:40 37 4
gpt4 key购买 nike

我没有在我的代码中处理 SIGCHLD。我的进程在终止后仍然立即被删除。我希望它成为僵尸进程。

如果我将 SIGCHLD 设置为 SIG_DFL 那么它会起作用吗?如何将 SIGCHLD 设置为 SIG_DFL

我想让进程变成僵尸进程,所以我可以在 waitpid 之后读取父进程中的子状态。

最佳答案

从您的问题历史来看,您似乎为此纠结不已。以下是其工作原理的概述:

  1. SIGCHLD 的默认处理是忽略。换句话说,如果您什么都不做,信号 将被忽略,但进程表中存在僵尸。这就是为什么您可以在 child 死后随时等待的原因。

  2. 如果您通过 signal手动将 SIGCHLD 的配置设置为 SIG_IGN,则语义与第 1 项中的略有不同。当您手动设置此配置时操作系统在它死亡时立即从进程表中删除子进程并且不会创建僵尸。因此,不再有任何状态信息可以获取,wait 将因 ECHILD 而失败。 (2.6.9 之后的 Linux 内核遵守此行为。)

关于linux - 什么信号(SIGCHLD,SIG_DFL);意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23075307/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com