免费注册 查看新帖 |

Chinaunix

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

关于zombie进程的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-02-20 17:18 |只看该作者 |倒序浏览
本帖最后由 bsknight 于 2011-02-20 17:22 编辑

  1. #define PSCMD     "ps -o pid,ppid,state,tty,command"

  2. int
  3. main(void)
  4. {
  5.     pid_t    pid;

  6.     if ((pid = fork()) < 0)
  7.         err_sys("fork error");
  8.     else if (pid == 0)      /* child */
  9.          exit(0);

  10.      /* parent */
  11.    
  12.      system(PSCMD);

  13.      abort();
  14. }
复制代码
为什么结果中,子进程变成了zombie?
主进程是在system(PSCMD);之后被终止,那时应该能对子进程进行处理吧?
  1.   PID  PPID S TT       COMMAND
  2. 2217  2184 S pts/1    bash
  3. 2384  2217 S pts/1    ./a.out
  4. 2385  2384 Z pts/1    [a.out] <defunct>
  5. 2386  2384 S pts/1    sh -c ps -o pid,ppid,state,tty,command
  6. 2387  2386 R pts/1    ps -o pid,ppid,state,tty,command
  7. Aborted
复制代码
注:我是双核的环境 ,是不是与这个有关 哪位给解释下过程

论坛徽章:
0
2 [报告]
发表于 2011-02-20 17:29 |只看该作者
在system(PSCMD);前面加个sleep(1)再看看

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
3 [报告]
发表于 2011-02-20 22:42 |只看该作者
最终你发现有个僵尸在那里?这个进程的父进程是什么?

论坛徽章:
0
4 [报告]
发表于 2011-02-21 00:11 |只看该作者
你是说调用system输出结果里面发现子进程变成僵尸了? 那很正常啊

僵尸就是这样产生的,子进程退出,父进程没有wait

如果是主程序退出后子进程还是僵尸状态才比较奇怪

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
5 [报告]
发表于 2011-02-21 00:15 |只看该作者
最终你发现有个僵尸在那里?这个进程的父进程是什么?
cjaizss 发表于 2011-02-20 22:42



    哦,终于明白你的意思了,你中间的system的ps是用于查看的。我还以为你后来发现居然有僵尸存活呢。
  那就正常了,你自己fork了,父进程并没有立即收尸,当然会有僵尸

论坛徽章:
0
6 [报告]
发表于 2011-02-21 00:47 |只看该作者
wait一下就可以啦~或者捕捉信号~

论坛徽章:
0
7 [报告]
发表于 2011-02-21 01:01 |只看该作者
本帖最后由 bsknight 于 2011-02-21 01:03 编辑

懂了 谢谢各位 还以为主线程return和exit都能收尸呢。。

论坛徽章:
0
8 [报告]
发表于 2011-02-22 10:25 |只看该作者
懂了 谢谢各位 还以为主线程return和exit都能收尸呢。。
bsknight 发表于 2011-02-21 01:01



    主线程return和exit后,主线程本身是不“收尸”的,但是这样自进程的父进程会自动变为1,init进程会自动调用wait,也就相当于是为主线程收它自进程的尸了吧。

论坛徽章:
0
9 [报告]
发表于 2011-02-28 15:41 |只看该作者
回复 8# logicBaby


    懂了 谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP