免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1451 | 回复: 1
打印 上一主题 下一主题

[Linux] 下列代码会产生僵尸进程吗?求助!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-03-11 12:01 |只看该作者 |倒序浏览
static int  func1(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了吗?

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2013-03-11 12:30 |只看该作者
没有问题的.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP