国产三级农村妇女在线,国产精品毛片a∨一区二区三区,国产乱子伦视频大全,国产精品色拉拉,国产欧美日韩一区二区三区,

首頁(yè) > 技術(shù) > Linux

linux產(chǎn)生zombie的原因是什么

Linux 2022-09-26 12:04:17

Linux產(chǎn)生zombie(僵尸進(jìn)程)的原因是:父進(jìn)程產(chǎn)生子進(jìn)程后,子進(jìn)程先于父進(jìn)程退出,但父進(jìn)程沒(méi)有處理子進(jìn)程發(fā)出的退出信號(hào),因此子進(jìn)程就會(huì)被稱為僵尸進(jìn)程;此時(shí)使用root身份也不能kill殺死進(jìn)程,可以通過(guò)殺死子進(jìn)程的父進(jìn)程來(lái)解決。

程序員必備接口測(cè)試調(diào)試工具:立即使用
Apipost = Postman + Swagger + Mock + Jmeter
Api設(shè)計(jì)、調(diào)試、文檔、自動(dòng)化測(cè)試工具
后端、前端、測(cè)試,同時(shí)在線協(xié)作,內(nèi)容實(shí)時(shí)同步

教程操作環(huán)境:linux7.3系統(tǒng)、Dell G3電腦。

linux產(chǎn)生zombie的原因是什么

產(chǎn)生原因:

僵尸進(jìn)程,英文名zombie process,顧名思義就是死掉的進(jìn)程。那么僵尸進(jìn)程究竟是什么產(chǎn)生的呢

僵尸進(jìn)程產(chǎn)生的原因就是父進(jìn)程產(chǎn)生子進(jìn)程后,子進(jìn)程先于父進(jìn)程退出,但是父進(jìn)程由于種種原因,并沒(méi)有處理子進(jìn)程發(fā)送的退出信號(hào),那么這個(gè)子進(jìn)程就會(huì)成為僵尸進(jìn)程。

這個(gè)是所謂的zombie(僵尸進(jìn)程)是指在fork()/execve()過(guò)程中,假設(shè)子進(jìn)程結(jié)束時(shí)父進(jìn)程仍存在,而父進(jìn)程fork()之前既沒(méi)安裝SIGCHLD信號(hào)處理函數(shù)調(diào)用waitpid()等待子進(jìn)程結(jié)束,又沒(méi)有顯式忽略該信號(hào),則子進(jìn)程成為僵尸進(jìn)程,無(wú)法正常結(jié)束,此時(shí)即使是root身份kill -9也不能殺死僵尸進(jìn)程。補(bǔ)救辦法是殺死僵尸進(jìn)程的父進(jìn)程(僵尸進(jìn)程的父進(jìn)程必然存在),僵尸進(jìn)程成為”孤兒進(jìn)程”,過(guò)繼給1號(hào)進(jìn)程init,init始終會(huì)負(fù)責(zé)清理僵尸進(jìn)程。

僵尸進(jìn)程是指的父進(jìn)程已經(jīng)退出,而該進(jìn)程dead之后沒(méi)有進(jìn)程接受,就成為僵尸進(jìn)程.(zombie)進(jìn)程

解決方法:

(1) 父進(jìn)程通過(guò)wait和waitpid等函數(shù)等待子進(jìn)程結(jié)束,這會(huì)導(dǎo)致父進(jìn)程掛起。

執(zhí)行wait()或waitpid()系統(tǒng)調(diào)用,則子進(jìn)程在終止后會(huì)立即把它在進(jìn)程表中的數(shù)據(jù)返回給父進(jìn)程,此時(shí)系統(tǒng)會(huì)立即刪除該進(jìn)入點(diǎn)。在這種情形下就不會(huì)產(chǎn)生defunct進(jìn)程。

(2) 如果父進(jìn)程很忙,那么可以用signal函數(shù)為SIGCHLD安裝handler。在子進(jìn)程結(jié)束后,父進(jìn)程會(huì)收到該信號(hào),可以在handler中調(diào)用wait回收。

(3) 如果父進(jìn)程不關(guān)心重點(diǎn)內(nèi)容子進(jìn)程什么時(shí)候結(jié)束,那么可以用signal(SIGCLD, SIG_IGN)或signal(SIGCHLD, SIG_IGN)通知內(nèi)核,自己對(duì)子進(jìn)程的結(jié)束不感興趣,那么子進(jìn)程結(jié)束后,內(nèi)核會(huì)回收,并不再給父進(jìn)程發(fā)送信號(hào)

(4)fork兩次,父進(jìn)程fork一個(gè)子進(jìn)程,然后繼續(xù)工作,子進(jìn)程fork一個(gè)孫進(jìn)程后退出,那么孫進(jìn)程被init接管,孫進(jìn)程結(jié)束后,init會(huì)回收。不過(guò)子進(jìn)程的回收還要自己做。

推薦學(xué)習(xí):Linux視頻教程

以上就是linux產(chǎn)生zombie的原因是什么的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注其它相關(guān)文章!

TAg

加載中~

本網(wǎng)站LOGO受版權(quán)及商標(biāo)保護(hù),版權(quán)登記號(hào):國(guó)作登字-2022-F-10126915,未經(jīng)湖南木星科技官方許可,嚴(yán)禁使用。
Copyright ? 2012-2022 湖南木星科技有限公司(木星網(wǎng))版權(quán)所有
轉(zhuǎn)載內(nèi)容版權(quán)歸作者及來(lái)源網(wǎng)站所有,本站原創(chuàng)內(nèi)容轉(zhuǎn)載請(qǐng)注明來(lái)源,商業(yè)媒體及紙媒請(qǐng)先聯(lián)系:aishangyiwan@126.com

工信部備案號(hào):湘ICP備19012813號(hào)-5