天天看點

Linux中的僵屍程序與孤兒程序

1、僵屍程序

一個子程序在其父程序沒有調用wait()或waitpid()的情況下退出,這個子程序就是僵屍程序。如果其父程序還存在而一直不調用wait,則該僵屍程序将無法回收,等到其父程序退出後該程序将被init回收。

Linux中的僵屍程式與孤兒程式

運作結果

Linux中的僵屍程式與孤兒程式

2、孤兒程序

一個父程序退出,而它的一個或多個子程序還在運作,那麼那些子程序将成為孤兒程序。孤兒程序将被init程序(程序号為1)所收養,并由init程序對他們完成狀态收集工作。

Linux中的僵屍程式與孤兒程式

運作結果

Linux中的僵屍程式與孤兒程式

然而子程序一直在調用,也不能被ctrl^c掉。。

3、注冊函數atexit,在程序退出時調用

Linux中的僵屍程式與孤兒程式

運作結果

Linux中的僵屍程式與孤兒程式

由結果可見,當我們用注冊函數調用fun1、fun2、fun3時它在整個程序退出時會倒着給我們列印這些函數中的内容,在最後退出時調用第一個注冊函數并列印資訊。

繼續閱讀