gpt4 book ai didi

c - 杀死使用 execl 生成的子进程而不使其成为僵尸进程

转载 作者:行者123 更新时间:2023-12-02 01:57:09 25 4
gpt4 key购买 nike

我需要生成一个长时间运行的子进程,然后从父代码中终止它。目前我确实喜欢这样:

int PID = fork();
if (PID == 0) {
execl("myexec", "myexec", nullptr);
perror("ERROR");
exit(1);
}
// do something in between and then:
kill(PID, SIGKILL);

这完成了子进程停止的意义上的工作,但随后它仍然是僵尸进程。我尝试通过添加以下内容来完全删除它:

kill(getpid(), SIGCHLD);

无济于事。我一定做错了什么,但我不知道是什么,所以任何帮助将不胜感激。谢谢。

最佳答案

signal(SIGCHLD, SIG_IGN);
kill(getpid(), SIGCHLD);

急速。没有僵尸。

通过忽略 SIGCHLD,我们告诉内核我们不关心退出代码,因此僵尸会立即消失。

关于c - 杀死使用 execl 生成的子进程而不使其成为僵尸进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69509427/

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