孤儿进程 与 僵死进程

对于初学者,孤儿进程和僵死进程有时候比较难以区分,其实孤儿进程是代表进程的身份,僵死进程代表进程的状态。是很不等同的。
孤儿进程:
fork函数将linux进程复制为两份几乎相同的数据结构,像是细胞分裂一样,只是进程号不一样,进程号不变的是父进程,新产生的是子进程。假设fork完成后,父进程完成了生育后代的光荣使命,便草草了结自己的生命,但子进程还需要生存很长一段时间,此时子进程的身份变成了失去父亲的孤儿。
linux的init进程有义务和责任承担起对这个孤儿的监护重任。

僵死进程:
每个进程完成了自己的任务后,便会在main中return或者使用exit结束自己的生存,变成一具尸体,很显然尸体不能给自己料理后事,将会放在某个地方等待监护人来料理。此时的状态就是僵死状态。
为什么linux要把进程的结束变成僵死状态而不是直接毁灭呢?这是因为父进程有获取子进程结束返回信息的需求。

总结:
父死子存变孤儿
父存子死变僵死
父死子死全毁灭

你可能感兴趣的:(c语言)