1、僵尸进程

什么是僵尸进程?

处于僵死状态的进程-----(危害)会造成资源泄漏

僵尸进程的产生原因:子进程先于父进程退出,因为要保留退出原因,因此操作系统不能直接释放所有资源,通知父进程获取退出原因,允许操作系统释放资源,但是父进程没有关注这个通知导致子进程退出后无法释放所有资源,处于僵死状态成为僵尸进程。

如何避免:进程等待

出现了僵尸进程如何处理:结束掉父进程,僵尸进程也就结束了。

代码模拟:

【Linux】僵尸进程与孤儿进程

运行此程序,然后我们使用命令ps来查看进程,具体如下:我们可以看出此时父进程的pid为3946,而子进程的pid为3947。

【Linux】僵尸进程与孤儿进程

然后我们结束掉子进程:使用命令kill+该进程的pid

【Linux】僵尸进程与孤儿进程

然后我们可以看到此时子进程并没有消失,而是状态由S+变为了Z+,成为了一个僵尸进程。如果此时结束父进程,那么这个僵尸进程就会消失。

2、孤儿进程

孤儿进程的产生原因:父进程先于子进程退出,子进程就会成为孤儿进程,运行在后台,父进程成为1号进程。

代码模拟:此处代码与上面僵尸进程的代码一样,我们直接往下看。

我们运行程序,并查看进程信息,可以发现此时父进程的pid是4006,子进程的pid是4007,然后我们结束掉父进程,父进程直接消失了,而子进程的状态变成了S,没有了“+”,此时运行在后台了。

【Linux】僵尸进程与孤儿进程

我们再查看此时进程的详细信息,可以发现,此时该子进程的父进程成为了1号进程。

【Linux】僵尸进程与孤儿进程

 

相关文章: