今天我就给大家讲讲Linux的僵尸进程。什么是僵尸流程?僵尸进程是指进程已经退出但其父进程没有恢复内核资源的进程,即内核空之间的PCB(进程控制块)没有释放,raksmart服务器。
下面是僵尸进程的示例程序。在这个程序中,父进程让子进程退出而不处理,然后父进程调用系统函数列出当前前台进程信息。代码如下:
#包括
#包括
#包括
int main()
{
int pid
if((pid = fork()) == -1)
perror(" fork err ");
else if(!pid){
退出(0);
}
睡眠(1);
系统(“PS”);
返回0;
}
运行结果如下:
红盒子的过程是死状态。
如何清除僵尸进程:
1.重写父进程,并在子进程死后为其收集主体。方法是接管SIGCHLD信号。子进程死亡后,会向父进程发送一个SIGCHLD信号。收到这个信号后,父进程执行waitpid()函数为子进程收集尸体。
2.杀死父进程。父进程死亡后,僵尸进程成为“孤儿进程”,继承给1号进程init,init将一直负责清理僵尸进程。它产生的所有僵尸进程也随之消失。
Wait()和waitpid()
wait():
调用wait()函数的父进程将停止等待该进程的任何子进程完成,然后回收该子进程的内核进程资源。
waitpid():
waitpid()函数可用于等待指定子进程(具有指定pid的子进程)完成。该函数声明如下:
您可以通过/proc//映射文件查看进程资源。
1.《僵死进程 Linux僵尸进程清除方法》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《僵死进程 Linux僵尸进程清除方法》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/yule/1603689.html