先看下"_exit"和"exit":
exit被呼叫時,將沖刷所有的標準i/o流,關閉所有開啟的檔案描述符。在傳統實現中,同時也將關閉標準i/o流。即表示標準輸出file物件的相關儲存區將被清0。而_exit不會執行這些操作。
然而,大多數exit的現代實現不再關閉流。因為程序即將終止,核心將關閉所有已開啟的檔案描述符。
linux程式的終止分為"正常終止"和"異常終止",具體可能情況如下:
正常終止
異常終止
幾個要點:
1.不管程序如何終止,最後都會執行核心中的同一段**:為相應程序關閉所有開啟描述符,釋放記憶體等等。
2.若父程序在子程序之前終止了,則子程序的父程序將變為init程序,其pid為1;保證每個程序都有父程序。
3.當子程序先終止,父程序如何知道子程序的終止狀態?事實上,核心為每個終止子程序儲存了終止狀態等資訊,父程序呼叫wait等函式,就可獲取該資訊。
4.當父程序呼叫wait等函式後,核心將釋放終止程序所使用的所有記憶體,關閉其開啟的所有檔案。
5.對於已經終止、但是其父程序尚未對其呼叫wait等函式的程序,被稱為殭屍程序(即已經結束,但尚未釋放資源的)。
6.對於父程序先終止,而被init領養的程序會是殭屍程序嗎?init對每個終止的子程序,都會呼叫wait函式,獲取其終止狀態資訊。
綜上所述,子程序呼叫exit後,父程序必須呼叫wait。
Linux 之exit 程序退出函式
標頭檔案 include include 原型 void exit int status void exit int status exit os立刻把管理記憶體的結構體 虛擬記憶體釋放掉。exit 不會馬上乾掉結構體,先看先看當前程序有沒有檔案快取區,若有則會先處理快取區中的資料,然後銷毀結構體。...
exit()函式學習
1.exit 函式介紹 函式名 exit 所在標頭檔案 stdlib.h 功 能 關閉所有檔案,終止正在執行的程序。用法格式 void exit int status exit 是電腦函式 exit 通常是用在子程式中用來終結程式用的,使用後程式自動結束,跳回作業系統。exit 0 表示程式正常退出...
exit函式和 exit函式的區別
在談論exit函式與 exit函式之前,我們先了解一下他們的使用場景,他們是在程序終止中使用的,那什麼是程序終止呢?程序終止的場景 1 執行完畢,結果正確 即就是程序中的所有 都已執行完畢,而且執行結果也是你想要得到的,就像司馬懿的一生,順順利利的結束,實現了自己的人生理想,最後也成為了千古名人 2...