下列代码会产生僵尸进程吗?求助!!
static intfunc1(CHAR* pcPath, CHAR* apcArgv[]){
int iRet = 0;
pid_t pidNew = 0;
iRet = func2();
if (0 != iRet)
{
return iRet;
}
pidNew = fork();
if (pidNew > 0)
{
/* 父进程等待子进程退出 */
(void)waitpid(pidNew, NULL, 0);
iRet = func3();
}
else if (0 == pidNew) /* 子进程 */
{
iRet = func4();
if (0 == iRet)
{
iRet = execv(pcPath, apcArgv);
}
}
else
{
/* 出错,记录返回值 */
iRet = -1;
}
return iRet;
}
有人告诉我,标记位红色的地方如果执行失败,则子进程没有exit退出,会导致产生僵尸进程。
为什么呢?父进程不是已经waitpid了吗? 没有问题的.
页:
[1]