城市网

Linux查看僵尸进程(僵死进程)

导读 大家好,小城来为大家解答以上问题。Linux查看僵尸进程,僵死进程很多人还不知道,现在让我们一起来看看吧!为了后续讲解,我们编写一个程...

大家好,小城来为大家解答以上问题。Linux查看僵尸进程,僵死进程很多人还不知道,现在让我们一起来看看吧!

为了后续讲解,我们编写一个程序例子。程序中接收用户输入,并创建子进程处理用户输入。 程序示例如下: 运行程序,再输入数据并获取处理结果之后,我们查看系统中进程,发现产生了僵尸进程。 僵尸进程产生的原因是因为子进程已经结束运行,但是父进程没有对其进行回收。 第一种方式:父进程创建了子进程之后,等待回收子进程资源。 优化程序后,我们再次执行并查看系统中进程,没有僵尸进程了。 父进程等待回收子进程资源时,父进程此时并没有充分利用起来,影响系统效率。 在子进程结束后,父进程会收到SIGCHLD信号,通过在父进程中设置信号处理函数,收到SIGCHLD信号后再执行回收操作。这样提高系统效率。 如果程序中不关心子进程是否结束,那么对于SIGCHLD信号,父进程设置为忽略。那么当子进程退出后,内核会将该进程回收。所以,忽略SIGCHLD信号也是一种处理方法。 最后,还有一种处理方法。父进程创建子进程并等待子进程退出,在子进程处理中,创建孙进程,子进程马上结束。 这样父进程等待子进程并不需要太久,而孙进程的父进程已经结束,孙进程的父进程将设置为init进程。孙进程结束后,由init系统进程对其进行回收。

本文到此结束,希望对大家有所帮助。