thelordsaves 发表于 2013-03-11 12:01

下列代码会产生僵尸进程吗?求助!!

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了吗?

linux_c_py_php 发表于 2013-03-11 12:30

没有问题的.
页: [1]
查看完整版本: 下列代码会产生僵尸进程吗?求助!!