什麼是殭屍程序?
處於僵死狀態的程序-----(危害)會造成資源洩漏
殭屍程序的產生原因:子程序先於父程序退出,因為要保留退出原因,因此作業系統不能直接釋放所有資源,通知父程序獲取退出原因,允許作業系統釋放資源,但是父程序沒有關注這個通知導致子程序退出後無法釋放所有資源,處於僵死狀態成為殭屍程序。
如何避免:程序等待
出現了殭屍程序如何處理:結束掉父程序,殭屍程序也就結束了。
**模擬:
執行此程式,然後我們使用命令ps來檢視程序,具體如下:我們可以看出此時父程序的pid為3946,而子程序的pid為3947。
然後我們結束掉子程序:使用命令kill+該程序的pid
然後我們可以看到此時子程序並沒有消失,而是狀態由s+變為了z+,成為了乙個殭屍程序。如果此時結束父程序,那麼這個殭屍程序就會消失。
孤兒程序的產生原因:父程序先於子程序退出,子程序就會成為孤兒程序,執行在後台,父程序成為1號程序。
**模擬:此處**與上面殭屍程序的**一樣,我們直接往下看。
我們執行程式,並檢視程序資訊,可以發現此時父程序的pid是4006,子程序的pid是4007,然後我們結束掉父程序,父程序直接消失了,而子程序的狀態變成了s,沒有了「+」,此時執行在後台了。
我們再檢視此時程序的詳細資訊,可以發現,此時該子程序的父程序成為了1號程序。
Linux 殭屍程序與孤兒程序
之前的部落格有講過儲存程序資訊的乙個重要的資料結構,task struct結構體,其中,state表示程序可能出現的狀態。如下 static const char const task state array 我們對個別狀態進行解釋如下 s sleeping 淺度睡眠,也是不可中斷睡眠。d disk...
Linux 殭屍程序與孤兒程序
產生原因 子程序先於父程序退出,他要保留退出原因在pcb中,因此退出後不會自動釋放所有資源,子程序退出後作業系統會通知父程序,子程序退出了,去獲取一下原因,然後完全釋放子程序資源,假如父程序不管子程序的退出狀態,那麼這個子程序將進入僵死狀態,成為殭屍程序 實現殭屍程序 該程式為20秒的殭屍程序,在第...
Linux 殭屍程序與孤兒程序
殭屍程序 產生原因 子程序先於父程序退出,他要保留退出原因在pcb中,因此退出後不會自動釋放所有資源,子程序退出後作業系統會通知父程序,子程序退出了,去獲取一下原因,然後完全釋放子程序資源,假如父程序不管子程序的退出狀態,那麼這個子程序將進入僵死狀態,成為殭屍程序 實現殭屍程序 該程式為20秒的殭屍...