linux产生zombie(僵尸进程)的原因是:父进程产生子进程后,子进程先于父进程退出,但父进程没有处理子进程发出的退出信号,因此子进程就会被称为僵尸进程;此时使用root身份也不能kill杀死进程,可以通过杀死子进程的父进程来解决。
树图思维导图提供 linux产生zombie的原因是什么思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 linux产生zombie的原因是什么思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:38acd5501fdda66337272409f7c224e0
linux产生zombie的原因是什么思维导图模板大纲
僵尸进程,英文名zombie process,顾名思义就是死掉的进程。那么僵尸进程究竟是什么产生的呢
僵尸进程产生的原因就是父进程产生子进程后,子进程先于父进程退出,但是父进程由于种种原因,并没有处理子进程发送的退出信号,那么这个子进程就会成为僵尸进程
这个是所谓的zombie(僵尸进程)是指在fork()/execve()过程中,假设子进程结束时父进程仍存在,而父进程fork()之前既没安装SIGCHLD信号处理函数调用waitpid()等待子进程结束
又没有显式忽略该信号,则子进程成为僵尸进程,无法正常结束,此时即使是root身份kill -9也不能杀死僵尸进程
补救办法是杀死僵尸进程的父进程(僵尸进程的父进程必然存在),僵尸进程成为”孤儿进程”,过继给1号进程init,init始终会负责清理僵尸进程
僵尸进程是指的父进程已经退出,而该进程dead之后没有进程接受,就成为僵尸进程.(zombie)进程
(1) 父进程通过wait和waitpid等函数等待子进程结束,这会导致父进程挂起
执行wait()或waitpid()系统调用,则子进程在终止后会立即把它在进程表中的数据返回给父进程,此时系统会立即删除该进入点。在这种情形下就不会产生defunct进程
(2) 如果父进程很忙,那么可以用signal函数为SIGCHLD安装handler
在子进程结束后,父进程会收到该信号,可以在handler中调用wait回收
(3) 如果父进程不关心重点内容子进程什么时候结束
那么可以用signal(SIGCLD, SIG_IGN)或signal(SIGCHLD, SIG_IGN)通知内核,自己对子进程的结束不感兴趣,那么子进程结束后,内核会回收,并不再给父进程发送信号
(4)fork两次,父进程fork一个子进程,然后继续工作
子进程fork一个孙进程后退出,那么孙进程被init接管,孙进程结束后,init会回收。不过子进程的回收还要自己做
树图思维导图提供 情绪的感受方式 在线思维导图免费制作,点击“编辑”按钮,可对 情绪的感受方式 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:2c54b2217f97a07f6d55d59ffa68bdcc
树图思维导图提供 农村幼儿园利用绘本阅读开展安全教育的实践研究_副本 在线思维导图免费制作,点击“编辑”按钮,可对 农村幼儿园利用绘本阅读开展安全教育的实践研究_副本 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:2000927dcd222b18fa95af52d1709af8