从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章主要介绍了linux为什么会产生zombie的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇linux为什么会产生zombie文章都会有所收获,下面我们一起来看看吧。
成都创新互联-专业网站定制、快速模板网站建设、高性价比黄石港网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式黄石港网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖黄石港地区。费用合理售后完善,十年实体公司更值得信赖。
linux产生zombie(僵尸进程)的原因是:父进程产生子进程后,子进程先于父进程退出,但父进程没有处理子进程发出的退出信号,因此子进程就会被称为僵尸进程;此时使用root身份也不能kill杀死进程,可以通过杀死子进程的父进程来解决。
本教程操作环境:linux7.3系统、Dell G3电脑。
产生原因:
僵尸进程,英文名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会回收。不过子进程的回收还要自己做。
关于“linux为什么会产生zombie”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“linux为什么会产生zombie”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注创新互联行业资讯频道。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图