exit()和_exit()這兩個函式都是用於函式退出,但這兩者有一些細微的差別,在exit()函式裡會呼叫_exit()函式。下面來看看exit()的函式**大概:
void
exit
(int status)..
._exit
(status)
;}
其中_exit_funcs是儲存由__cxa_atexit和atexit註冊的函式的鍊錶,而這個while迴圈則遍歷該鍊錶並逐個呼叫這些註冊的函式。最後再呼叫_exit(),這個函式的作用僅僅是呼叫了exit這個系統呼叫。即_exit()呼叫後,程序會直接結束。
所以exit()和_exit()的區別在於,exit()會首先將所有使用atexit註冊的函式進行呼叫以後再推出,而_exit()則是直接結束程式。
注意:_cxa_atexit()和atexit()這兩個函式的作用相同,可以看成等價。這兩個函式的作用是註冊一些函式用於在main()函式呼叫完以後再呼叫。
#include
#include
void
test1()
void
test2()
void
test3()
void
test4()
void
test5()
intmain()
執行結果:
(1)使用exit()函式後
#include
#include
void
test1()
void
test2()
void
test3()
void
test4()
void
test5()
intmain()
執行結果:
(2)使用_exit()函式
#include
#include
void
test1()
void
test2()
void
test3()
void
test4()
void
test5()
intmain()
exit 和 exit 兩個函式的區別
exit 和 exit 這兩個函式都是用於函式退出,但這兩者有一些細微的差別,在exit 函式裡會呼叫 exit 函式。下面來看看exit 的函式 大概 void exit int status exit status 其中 exit funcs是儲存由 cxa atexit和atexit註冊的函式...
linuxC庫函式 exit和exit的區別
在linux的標準庫函式中,有一套稱作高階i o的函式,我們熟知的printf fopen fread fwrite都在此列,他們也被稱作緩衝i o。其特徵是對應每乙個開啟的檔案,都存在乙個緩衝區,在記憶體中都有一片緩衝區,每次讀檔案會多讀若干條記錄,這樣下次讀檔案時就可以直接從記憶體的快取中取出,...
exit和 exit函式的區別
exit函式在函式退出時要對記憶體中的緩衝區做儲存處理,將緩衝區的內容儲存到磁碟。exit函式則不做這種處理,直接關閉,可能造成緩衝的資料丟失。在linux的標準庫函式中,有一套稱作高階i o的函式,我們熟知的printf fopen fread fwrite都在此列,他們也被稱作緩衝 i o。其特...