exit 和 exit 兩個函式的區別

2021-10-06 11:43:27 字數 1345 閱讀 5372

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。其特...