Python 父进程停止后,子进程仍处于活动状态

Python 父进程停止后,子进程仍处于活动状态,python,Python,我编写了一个python守护进程。在我停止它之后,我在内存中看到它的子进程仍然处于活动状态,并且具有pid=1的父进程。在停止守护进程时,我应该如何杀死这些子进程 我不知道等价的python调用,但在C中,接受的策略是在子pid上使用WNOHANG选项执行waitpid/wait(3) 父进程id设置为1=>init进程,因为父进程已死亡并使子进程成为孤立进程 这方面的c代码如下 #include <sys/wait.h> /* pid_t wait(int *stat_loc);

我编写了一个python守护进程。在我停止它之后,我在内存中看到它的子进程仍然处于活动状态,并且具有pid=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);
}
#包括
/*
pid_t wait(int*stat_loc);
*/
void makeovernidExit(pid_t pid)
{
int stat_loc=0;
waitpid(pid和统计位置,WNOHANG);
}
调用
makeorphandpidexit(orphandpid)
将使子进程摆脱孤立恐惧

有关等候的文件(3)—

更新:


根据

我不知道等效的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);
}
#包括
/*
pid_t wait(int*stat_loc);
*/
void makeovernidExit(pid_t pid)
{
int stat_loc=0;
waitpid(pid和统计位置,WNOHANG);
}
调用
makeorphandpidexit(orphandpid)
将使子进程摆脱孤立恐惧

有关等候的文件(3)—

更新:


根据

的规定,等效的python调用是`os.waitpid(pid,os.WNOHANG)

如果您使用的是多处理库,则应在启动子流程之前将标志设置为True。这将使它在父进程退出时退出。

如果使用多处理库,则应在启动子进程之前将该标志设置为True。这将使它在父进程退出时退出。

ps-ef | grep“process cmd line”| grep-v grep | awk“{print$2}”将为您提供以“process cmd line”启动的任何进程的pid。通常,我们将每个进程的pid转储到一个pid文件中,并编写一个瘦包装器来获取生成的进程的pid。master.pid child_func1.pid child_func2.pid etc.ps-ef | grep“process cmd line”| grep-v grep | awk{print$2}将为您提供任何以“process cmd line”启动的进程的pid。通常,我们将每个进程的pid转储到一个pid文件中,并编写一个薄型包装器来获取生成的进程的pid。master.pid child\u func1.pid child\u func2.pid等。