解释:
僵尸进程是指的父进程已经退出,而该进程dead之后没有进程接受,就成为僵尸进程.(zombie)进程
产生原因:
每个Unix进程在进程表里都有一个进入点(entry),ps命令查看到的进程信息就存放在这里。子进程结束之后,内核会释放掉该进程占用的所有资源,但该进程的进程号、退出码、退出状态等信息还保留,指导其父进程接手并释放这些信息。
在UNIX 系统中,如果一个进程结束了,但父进程没有接受并释放进程号、退出码、退出状态等信息,则该进程变为僵尸进程。
查看方式:
ps aux | grep 'Z'
即可查看到系统中现有的僵尸进程。
僵尸进程对系统的影响:
僵尸进程对系统的影响在于过多的僵尸进程会导致系统无法分配新的可用进程号
如何处理僵尸进程:
杀死僵尸进程的父进程,则系统init进程会接手僵尸进程,负责清理。
如何构造僵尸进程:
c语言版
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
pid_t pids[13]; /*13个进程*/
int i;
for (i = 12; i >= 0; --i) {
pids[i] = fork();
if (pids[i] == 0) {
_exit(0);
}
}
pause(); /*脚本暂停,父进程暂停,产生13个僵尸进程*/
/* 父进程waitpid方法,获取到僵尸进程exit之后的信息,则无僵尸进程产生
for (i = 12; i >= 0; --i)
waitpid(pids[i], NULL, 0);
*/
return 0;
}

僵尸进程是指在父进程退出后,子进程死亡但信息未被父进程接收的状态。它们在进程表中占用资源,可能导致系统无法分配新的进程号。通过`ps aux | grep 'Z'`可以检查僵尸进程。解决方法包括杀死父进程,让init接管并清理。本文将探讨如何用C语言构造僵尸进程。
5690

被折叠的 条评论
为什么被折叠?



