Czs--从此蜕变

僵尸进程

孤儿进程:
父进程先于子进程退出,此时子进程便为孤儿进程
孤儿进程会被系统指定的进程所“收养”,即该进程称为孤儿进程的新的父进程
在孤儿进程退出时,“继父”会进行处理,不会是其成为僵尸进程

僵尸进程:

子进程先于父进程退出,但是父进程没有处理子进程的退出状况,子进程就会变成僵尸进程。

僵尸进程会滞留PCB的部分信息在内存中

大量的僵尸进程会消耗系统资源,所以应该尽量避免僵尸进程的产生

如何避免僵尸进程的产生
1.让父进程先退出(不好控制)
2.让父进程处理子进程的退出

    使用wait或者waitpid函数
    os.wait()
    功能:等待子进程的退出,进行处理
    参数:无
    返回值:一个元组,第一个值为退出的子进程pid
                      第二个值为子进程退出状态
    使用信号处理

    os.waitpid(pid,option)
    功能:处理子进程的退出
    参数 pid:-1 表示等待任意的子进程退出
              >0 表示等待相应的pid号的子进程
         option:0 表示阻塞等待
                 WNOHANG: 表示非阻塞等待,需要循环处理查看子进程的状态
    返回值:同wait

3.创建二级子进程

    父进程创建子进程后,等待子进程退出
    子进程创建二级子进程后,马上退出,二级子进程成为孤儿进程
    让父进程和二级子进程处理具体事件
🐶 您的支持将鼓励我继续创作 🐶