在Kernel的书或者是System Programming的书中,有下面这些名词:僵死状态、僵尸进程、孤儿进程。
我感觉有必要阐述一下这几个词。
僵死状态:
这是进程的一种状态,当子进程退出之后,子进程会释放自己的一些资源,例如文件描述符、内存等;但是子进程需要向父进程返回它的状态,有些东西是不能够释放的,在Linux中这实际上就是task_struct,也就是操作系统中常说的PCB。task_struct中保存着进程的退出状态,父进程调用wait,实际上就是从其子进程的task_struct中获取相应的字段。
就在子进程结束,父进程还未调用wait之前,这段时间子进程已经退出了,但是其task_struct还保留着,这个状态称为“僵死状态”。
僵尸进程:
父进程先于子进程退出,,那么自进程就变成了“僵尸进程”,直到子进程运行结束。
孤儿进程:
僵尸进程,在运行结束的时候,会被init收养,成为“孤儿进程”,一般情况下,init会调用wait来获取进程的退出状态,进程彻底死掉。
阅读(1935) | 评论(0) | 转发(0) |