殭屍程序起因

2022-07-16 18:33:13 字數 531 閱讀 9899

由於子程序的結束和父程序的執行是乙個非同步過程,即父程序永遠無法**子程序 到底什麼時候結束. 那麼會不會因為父程序太忙來不及wait子程序,或者說不知道 子程序什麼時候結束,而丟失子程序結束時的狀態資訊呢? 不會。因為unⅸ提供了一種機制可以保證只要

父程序想知道子程序結束時的狀態資訊, 就可以得到。這種機制就是: 在每個程序退出的時候,

核心釋放該程序所有的資源,包括開啟的檔案,占用的記憶體等。但是仍然為其保留一定的資訊(包括程序號the process id,退出狀態the termination status of the process,執行時間the amount of cpu time taken by the process等)。直到

父程序通過wait / waitpid來取時才釋放. 但這樣就導致了問題,如果程序不呼叫wait / waitpid的話,那麼保留的那段資訊就不會釋放,其程序號就會一直被占用,但是系統所能使用的程序號是有限的,如果大量的產生

僵死程序

,將因為沒有可用的程序號而導致系統不能產生新的程序. 此即為殭屍程序的危害,應當避免。

殭屍程序和如何刪除殭屍程序

當乙個子程序結束後,他的父程序沒有等待他 wait waitpid 清除他的所有資源時,它就變成乙個殭屍程序。在linux系統中,在每個程序退出的時候,核心釋放該程序所有的資源,包括開啟的檔案,占用的記憶體等。但是仍然為其保留一定的資訊 包括程序號the process id,退出狀態the ter...

檢視殭屍程序並殺掉殭屍程序

在運維過程中,我們經常會碰到機器由於某幾個特殊的殭屍程序造成整台伺服器上的程序異常卡死,負載變高。例如以下 其中,存在8個殭屍程序,並且程序19712的cpu使用異常。檢視具體的殭屍程序有哪些 發現這些子殭屍程序的父程序即為19712程序。其對應的其實就是namenode程序 解決辦法 1 如果業務...

Defunct程序 殭屍程序

下面談談 defunct 程序,中文翻譯叫殭屍程序。下文整理於網路以及apue一書。一 什麼是殭屍程序 在unix 系統中,乙個程序結束了,但是他的父程序沒有等待 呼叫wait waitpid 他,那麼他將變成乙個殭屍程序。當用ps命令觀察程序的執行狀態時,看到這些程序的狀態列為defunct。殭屍...