我写了一个python守护进程。在我停止它之后,我在内存中看到它的子进程仍然存在并且有 pid=1 的父进程。在停止守护进程时我应该怎么做才能杀死这些子进程?
问问题
707 次
2 回答
2
如果您使用的是多处理库,则应在启动子进程之前将daemon标志设置为 True。这将使它在父级退出时退出。
于 2012-08-15T00:08:10.853 回答
1
我不知道等效的 python 调用,但在 C 中,接受的策略是在子 pid 上使用 WNOHANG 选项执行 waitpid/wait(3)。
父 id 设置为 1 => init 进程,因为父进程已经死亡并使子进程成为孤儿。
为此的c代码如下
#include <sys/wait.h>
/*
pid_t wait(int *stat_loc);
*/
void makeOrphanPidExit(pid_t pid)
{
int stat_loc = 0;
waitpid(pid, &stat_loc, WNOHANG);
}
调用makeOrphanPidExit(orphanPid)
将使子进程摆脱其孤立的恐惧!:)
等待文档(3) - http://linux.die.net/man/3/wait
更新:
于 2012-08-14T23:36:32.933 回答