久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

linux為什么會產生zombie

160次閱讀
沒有評論

共計 1202 個字符,預計需要花費 4 分鐘才能閱讀完成。

這篇文章主要介紹了 linux 為什么會產生 zombie 的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇 linux 為什么會產生 zombie 文章都會有所收獲,下面我們一起來看看吧。

linux 產生 zombie(僵尸進程)的原因是:父進程產生子進程后,子進程先于父進程退出,但父進程沒有處理子進程發(fā)出的退出信號,因此子進程就會被稱為僵尸進程;此時使用 root 身份也不能 kill 殺死進程,可以通過殺死子進程的父進程來解決。

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

linux 產生 zombie 的原因是什么

產生原因:

僵尸進程,英文名 zombie process,顧名思義就是死掉的進程。那么僵尸進程究竟是什么產生的呢

僵尸進程產生的原因就是父進程產生子進程后,子進程先于父進程退出,但是父進程由于種種原因,并沒有處理子進程發(fā)送的退出信號,那么這個子進程就會成為僵尸進程。

這個是所謂的 zombie(僵尸進程)是指在 fork()/execve() 過程中,假設子進程結束時父進程仍存在,而父進程 fork() 之前既沒安裝 SIGCHLD 信號處理函數調用 waitpid() 等待子進程結束,又沒有顯式忽略該信號,則子進程成為僵尸進程,無法正常結束,此時即使是 root 身份 kill - 9 也不能殺死僵尸進程。補救辦法是殺死僵尸進程的父進程 (僵尸進程的父進程必然存在),僵尸進程成為”孤兒進程”,過繼給 1 號進程 init,init 始終會負責清理僵尸進程。

僵尸進程是指的父進程已經退出, 而該進程 dead 之后沒有進程接受, 就成為僵尸進程.(zombie) 進程

解決方法:

(1)父進程通過 wait 和 waitpid 等函數等待子進程結束,這會導致父進程掛起。

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

(2)如果父進程很忙,那么可以用 signal 函數為 SIGCHLD 安裝 handler。在子進程結束后,父進程會收到該信號,可以在 handler 中調用 wait 回收。

(3)如果父進程不關心重點內容子進程什么時候結束,那么可以用 signal(SIGCLD, SIG_IGN)或 signal(SIGCHLD, SIG_IGN)通知內核,自己對子進程的結束不感興趣,那么子進程結束后,內核會回收,并不再給父進程發(fā)送信號

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

關于“l(fā)inux 為什么會產生 zombie”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“l(fā)inux 為什么會產生 zombie”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注丸趣 TV 行業(yè)資訊頻道。

正文完
 
丸趣
版權聲明:本站原創(chuàng)文章,由 丸趣 2023-08-03發(fā)表,共計1202字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發(fā)布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 台东市| 湖州市| 龙井市| 沧州市| 武宣县| 镇远县| 安多县| 凯里市| 安仁县| 海伦市| 朔州市| 津南区| 长顺县| 福鼎市| 女性| 和平县| 赤城县| 延安市| 鸡东县| 乡城县| 化德县| 宜春市| 西安市| 盐山县| 逊克县| 长岭县| 大邑县| 南郑县| 柞水县| 娱乐| 陈巴尔虎旗| 商城县| 松潘县| 美姑县| 建宁县| 宣恩县| 安义县| 禄丰县| 大方县| 抚松县| 绥阳县|