【Linux】進程終止方式--exit的調用過程!!!

在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)的數據結構 。
殭屍進程是一種非常特殊的進程,它已經釋放了幾乎所有的內存空間,沒有任何可執行代碼,也不能被調度,僅僅在進程列表中保留一個位置,記載該進程的退出狀態等信息供其他進程收集,除此之外,殭屍進程不再佔有任何內存空間。

發佈了89 篇原創文章 · 獲贊 75 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章