gpt4 book ai didi

c - 僵尸进程无需等待即可删除 C

转载 作者:IT王子 更新时间:2023-10-29 01:06:09 27 4
gpt4 key购买 nike

我有一个子进程,它只是 exit(0)。它变成了僵尸。有没有办法在父进程中没有 waitwaitpid 的情况下删除它?

R+  ./server //parent
R+ ./server //child
Z+ (server) //child zombie

最佳答案

您可以捕获 SIGCHLD 信号(例如使用 sigaction(2) 等...)。请注意,很少有函数可以从信号处理程序中安全调用。多读几遍signal(7) & signal-safety(7) .在信号处理程序内部做的一件好事是设置一些 volatile sigatomic_t 标志(您稍后会在信号处理程序的 外部 测试它,例如在某些 event loop 中。 ).或者您可以在初始化时设置一个 pipe(7) (到你自己的进程)并在你的信号处理程序(和其他地方的读端 poll(2))中写入几个字节,如 suggested by Qt .

waitpid(2)可以告诉不要停止 WNOHANG

如果您从不等待您的子进程,它将变为 zombie .

阅读Advanced Linux Programming .它有一个很好的关于过程的章节。

关于c - 僵尸进程无需等待即可删除 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16364084/

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