程序篇 exit 與 exit 退出程序

2021-10-06 10:44:56 字數 1756 閱讀 5133

exit()、_exit()

#include

void exit(int status);//參 數status,程式退出的返回值

#include

void _exit(int status);

exit()與_exit()區別

exit():

則在這些基礎上作了一些包裝,在執行退出之前加了若干道工序。

exit()屬於標準庫函式

_exit():

直接使程序終止執行,清除其使用的記憶體空間,並銷毀其在核心中的各種資料結構。

_exit()屬於系統呼叫函式

引數status:表示引數傳遞程序結束時的狀態,比如說,該程序是正常結束的,還是出現某種意外而結束的,一般來說,0表示沒有意外的正常結束;其他的數值表示出現了錯誤,程序非正常結束。我們在實際程式設計時,可以用wait系統呼叫接收子程序的返回值,從而針對不同的情況進行不同的處理

exit()與return區別

exit(0):正常執行程式並退出程式;

exit(1):非正常執行導致退出程式;

exit是結束程序,return是返回函式

只有在main()函式呼叫,return語句返回在絕大多數時等效於呼叫exit系列函式

**exit()與_exit()的區別

注意:在linux 的標準函式庫中,有一套稱作「高階i/o」的函式,我們熟知的printf()、fopen()、fread()、fwrite()都在此列,它們也被稱作「緩衝i/o(buffered i/o)」,其特徵是對應每乙個開啟的檔案,在記憶體中都有一片緩衝區,每次讀檔案時,會多讀出若干條記錄,這樣下次讀檔案時就可以直接從記憶體的緩衝區中讀取,每次寫檔案的時候,也僅僅是寫入記憶體中的緩衝區,等滿足了一定的條件(達到一定數量,或遇到特定字元,如換行符\n和檔案結束符eof),再將緩衝區中的內容一次性寫入檔案,這樣就大大增加了檔案讀寫的速度,但也為我們程式設計帶來了一點點麻煩。如果有一些資料,我們認為已經寫入了檔案,實際上因為沒有滿足特定的條件,它們還只是儲存在緩衝區內,這時我們用_exit()函式直接將程序關閉,緩衝區中的資料就會丟失,反之,如果想保證資料的完整性,就一定要使用exit()函式

exit()與_exit()測試**

printf函式只有讀到換行符才會從緩衝區讀取資料,屬於行緩衝。

exit()會清理緩衝io,把檔案緩衝區的內容寫回檔案,而_exit()會直接將程序關閉,緩衝區的資料就會丟失。

//exit和_exit區別

從結果可以看出,**04的字串並沒有輸出,而是直接被_exit()函式丟棄

程序退出 exit 和 exit

void exit int value 是標準庫函式,在標頭檔案 stdlib.h 中定義。具有重新整理 i o 緩衝區的作用。他的引數 value 是返回給父程序的資料 低 8 位有效 void exit int value 是系統呼叫函式,在標頭檔案 unistd.h 中定義。沒有重新整理 i ...

linux C 程序結束 exit與 exit函式

exit與 exit函式都是程序正常退出的函式 exit函式格式 include void exit int status exit函式格式 include void exit int status 相同點 1 這兩個函式都是正常退出程序 2 不論呼叫是否成功,都沒有返回資訊 不同點 1 exit函...

Linux 之exit 程序退出函式

標頭檔案 include include 原型 void exit int status void exit int status exit os立刻把管理記憶體的結構體 虛擬記憶體釋放掉。exit 不會馬上乾掉結構體,先看先看當前程序有沒有檔案快取區,若有則會先處理快取區中的資料,然後銷毀結構體。...