Linux下程序的退出

2021-07-11 15:37:38 字數 664 閱讀 5757

注意,本文說的是整個程序(乙個程序可能包含多個執行緒)的退出。

乙個程序的退出,有可能是由程序自己的使用者態**主動退出的,也可能是由核心通過訊號處理機制(如sigkill、sigabrt)強制執行的。

一、使用者態主動退出

有如下多種途徑,

直接main函式返回,

呼叫exit

呼叫_exit

呼叫exit_group

上面幾種情況,

前兩者等價(all functions registered with atexit(3) and on_exit(3) are called. all open stdio(3) streams are flushed and closed.),

後兩者等價(does not call any functions registered with atexit(3) or on_exit(3).  open stdio(3) streams are not flushed.)。

二、從核心態退出

程式因為異常,或者因為管理措施要被結束時,會收到相應的訊號(如sigkill等),然後核心在訊號處理過程中,就會將程序結束掉。

無論是哪種情況,最終都是殊途同歸的走到核心態的do_group_exit函式中,程序退出的全部工作(從os的角度),都是由此函式完成的。

未完......

Linux下程序退出的幾種形式

閱讀目錄 回到目錄 linux 下程序的退出分為正常退出和異常退出兩種 1.正常退出 a.在main 函式中執行return b.呼叫exit 函式 c.呼叫 exit 函式 2.異常退出 a.呼叫about函式 b.程序收到某個訊號,而該訊號使程式終止。不管是哪種退出方式,系統最終都會執行核心中的...

Linux程序 程序的退出

linux程序 程序的退出 2011 12 27 20 44 56 分類 linux void exit int status 注意點 1.status表明了程序終止時的狀態。當子程序使用 exit 後,父程序如果在用wait 等待子程序,那麼wait 將會返回status狀態,注意只有status...

Linux程序退出

在linux下,程序退出就表示程序即將結束了 為什麼是即將,這是因為linux設計的是父程序給子程序收屍 正常退出包括3種情形。main函式中執行return 0 呼叫exit函式,函式原型 void exit int status 呼叫 exit函式,函式原型 void exit int stat...