105-解决僵尸进程问题

os.waitpid()的第2个参数,0表示挂起父进程,1表示不挂起父进程。

import os
import time

pid = os.fork()

if pid:
    print('In parent. sleeping...')
    print(os.waitpid(-1, 1))  # 无僵尸进程可以处理,返回0
    time.sleep(20)
    print(os.waitpid(-1, 1))  # 处理僵尸进程,返回子进程PIP
    time.sleep(60)
    print('parent done.')
else:
    print('in child. sleeping...')
    time.sleep(10)
    print('child done')

# watch -n1 ps a  当子进程成为僵尸进程时,显示为Z
# kill 试图杀死僵尸进程、父进进程,查看结果
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Linux 进程管理与程序开发 进程是Linux事务管理的基本单元,所有的进程均拥有自己独立的处理环境和系统资源,...
    JamesPeng阅读 7,190评论 1 14
  • 我们知道在unix/linux中,子进程的结束和父进程的运行是一个异步过程, 当一个进程完成它的工作终止之后,它的...
    丶Em1tu0F阅读 4,400评论 0 3
  • 计算机系统漫游 代码从文本到可执行文件的过程(c语言示例):预处理阶段,处理 #inlcude , #defin...
    willdimagine阅读 9,048评论 0 5
  • 1,从本篇文章/音频/视频中我学到的最重要的概念:我们应该在团队合作中敢于积极表达自己的看法 2,我在本片文章/音...
    17数444韩文宇阅读 2,622评论 2 0
  • 2016年3月4日,正是初春时,我想到了江南,青墙白瓦,流水人家。 2016年6月10日,三个月的时间,我终于走遍...
    从前慢慢阅读 3,783评论 0 1