我使用 posix_spawnp 从我的主进程中生成子进程。
int iRet = posix_spawnp(&iPID, zPath, NULL, NULL, argv, environ);
if (iRet != 0)
{
return false;
}
有时,子进程在没有错误的情况下生成后,它会突然失效。这怎么可能发生?
我使用信号处理程序来获取子进程:
void SigCatcher(int n)
{
while(waitpid( -1, NULL, WNOHANG ) > 0);
}
每当我杀死一个子进程时,我都会手动调用它。
kill(oProcID, SIGKILL);
signal (SIGCHLD, SigCatcher);
这会导致产卵的孩子不复存在(没有我打电话给杀戮)吗?