当前位置:首页 » 操作系统 » linux僵尸进程

linux僵尸进程

发布时间: 2024-08-22 16:26:25

linux下僵尸态的进程是怎样引起的 csdn或chinaunix

当然会成为僵尸进程,你的C、D子进程比父进程先结束,
在fork ()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束,又没有显式忽略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill -9也不能杀死僵尸进程。补救办法是杀死僵尸进程的父进程(僵尸进程的父进程必然存在),僵尸进程成为"孤儿进程",过继给1号进程init,init始终会负责清理僵尸进程。
僵尸进程的避免:
(1) 父进程通过wait和waitpid等函数等待子进程结束,这会导致父进程挂起。
(2) 如果父进程很忙,那么可以用signal函数为SIGCHLD安装handler,因为子进程结束后, 父进程会收到该信号,可以在handler中调用wait回收。
(3) 如果父进程不关心子进程什么时候结束,那么可以用signal(SIGCHLD, SIG_IGN) 通知内核,自己对子进程的结束不感兴趣,那么子进程结束后,
内核会回收, 并不再给父进程发送信号。
(4) 还有一些技巧,就是fork两次,父进程fork一个子进程,然后继续工作,子进程fork一 个孙进程后退出,那么孙进程被init接管,孙进程结束后,
init会回收。不过子进程的回收 还要自己做。

Ⅱ Linux里面什么是僵尸进程

僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程都将成为一个僵尸进程。如果父进程先退出,子进程被init接管,子进程退出后init会收回其占用的相关资源。

我们都知道进程的工作原理。我们启动一个程序,开始我们的任务,然后等任务结束了,我们就停止这个进程。进程停止后,该进程就会从进程表中移除。

你可以通过System-Monitor查看当前进程。

In UNIX System terminology, a process that has terminated,but whose parent
has not yet waited for it, is called a
zombie.在Unix系统中,一个进程结束了,但是它的父进程没有等待它,那么它将变成一个僵尸进程。但是如果该进程的父进程已经先结束了,那么该进程就不会变僵尸进程,因为每个进程结束的时候,系统都会扫描当前系统中所运行的所有进程,看有没有哪个进程是刚刚结束的这个进程的子进程,如果是的话,就由init来接管他,成为他的父进程。

怎么查看僵尸进程?

利用命令ps,可以看到有父进程ID为1的进程是孤儿进程;s状态为z的是僵尸进程。

注意:孤儿进程是尚未终止但已停止的进程,但其父进程已经终止,由init收养;而僵尸进程则是已终止的进程,其父进程不一定终止。

热点内容
服务器屏蔽一段ip 发布:2024-11-25 08:52:06 浏览:100
售茶源码 发布:2024-11-25 08:37:29 浏览:463
压缩包改直链 发布:2024-11-25 08:34:33 浏览:611
安卓机的照片如何传送到苹果机上 发布:2024-11-25 08:32:48 浏览:917
手游服务器怎么找ip 发布:2024-11-25 08:23:10 浏览:752
c语言名次 发布:2024-11-25 08:04:22 浏览:56
新浪云服务器登录 发布:2024-11-25 08:04:21 浏览:854
工控机服务器电脑的区别 发布:2024-11-25 08:04:21 浏览:514
Python对比matlab 发布:2024-11-25 07:45:58 浏览:307
ovt机顶盒管理员密码多少 发布:2024-11-25 07:45:58 浏览:378