【Linux】程式終止方式--exit的呼叫過程!!!

doctor_xiong發表於2018-02-12

在linux裡面的程式終止的方法有8種。
五種正常終止:

  1. 從main函式返回
  2. 呼叫exit函式
  3. 呼叫_exit或者_Exit
  4. 最後一個執行緒從啟動例項返回
  5. 從最後一個執行緒呼叫pthread_exit

三種議程終止:

  1. 呼叫abort函式
  2. 接收到一個終止訊號
  3. 最後一個執行緒對取消請求做出響應

    exit的呼叫過程
    函式原型:void exit(int status);

    在呼叫一個函式結束程式的時候,_exit()或者_Exit()會立即進入核心,而exit函式則會先執行一些清理處理,然後返回核心。

這裡寫圖片描述
關於程式:
一個已經終止、但是其父程式尚未對其進行善後處理(獲取終止子程式的有關資訊、釋放它仍佔用的資源)的程式被稱為僵死程式,也就是處於TASK_ZOMIBE狀態的程式。
TASK_ZOMIBE狀態是程式結束前過渡狀態(僵死狀態),在一個程式呼叫了exit()之後,該程式並不會立刻完全消失,而是留下一個稱為殭屍程式(Zombie)的資料結構 。
殭屍程式是一種非常特殊的程式,它已經釋放了幾乎所有的記憶體空間,沒有任何可執行程式碼,也不能被排程,僅僅在程式列表中保留一個位置,記載該程式的退出狀態等資訊供其他程式收集,除此之外,殭屍程式不再佔有任何記憶體空間。

相關文章