孤儿进程:当父进程先于子进程退出,此时子进程就会成为孤儿进程。
- 孤儿进程会被系统指定进程收养,即系统进程会成为孤儿进程新的父进程。
僵尸进程:子进程先于父进程推出,父进程每行由处理子进程的退出状态,此时子进程就会成为僵尸进程
- 僵尸进程会滞留部分PCB信息在内存中,大量的僵尸进程会消耗系统的内存资源,所以要尽量避免僵尸进程产生
如何避免僵尸进程产生
- 父进程先退出
- 父进程处理子进程退出状态
pid,status = os.wait()
功能:在父进程中阻塞等待处理子进程的退出
返回值:pid 退出的那个子进程的pid号;status 子进程的退出状态
获取原来的退出状态
os.WEXITSTATUS(status))
pid,status = os.waitpid(pid,option)
功能:在父进程中阻塞等待处理子进程的退出
参数:
- pid -1 表示等待任意子进程推出;>0 表示等待对应pid号的子进程退出;
- option 0 表示阻塞等待;WNOHANG 表示非阻塞
返回值:pid 退出的那个子进程的pid号;status 子进程的退出状态
os.waitpid(-1,0) == os.wait()
创建二级子进程
父进程创建子进程等待子进程退出
子进程创建下一级子进程,然后立即退出
二级子进程成为孤儿,处理具体工作