atexit函式簡介

2021-07-27 13:41:39 字數 1235 閱讀 9889

按照iso c的規定,乙個程序可以登記多達32個函式,這些函式將由exit自動呼叫.通常這32個函式被稱為終止處理程式,並呼叫atexit函式來登記這些函式,atexit()註冊的函式型別應為不接受任何引數的void函式,當程式通過呼叫exit()或從main 中返回時, 引數function 所指定的函式會先被呼叫, 然後才真正由exit()結束程式。

atexit函式簡介:

函式名: atexit

標頭檔案:#include

功 能: 註冊終止函式(即main執行結束後呼叫的函式)

返回值:成功返回0;失敗返回乙個非0值,並存在error中。

用 法: void atexit(void (*func)(void));

注意:exit呼叫這些註冊函式的順序與它們登記時候的順序相反。同乙個函式如若登記多次,則也會被呼叫多次。

程式例子:

#include

#include

void exit_fn1(void)

void exit_fn2(void)

int main(void)

輸出:exit function #2 called

exit function #1 called

程序的終止方式:

有8種方式使程序終止,其中前5種為正常終止,它們是

1:從 main 返回

2:呼叫 exit

3:呼叫 _exit 或 _exit

4:最後乙個執行緒從其啟動例程返回

5:最後乙個執行緒呼叫pthread_exit

異常終止有3種,它們是

6:呼叫 abort

7:接到乙個訊號並終止

8:最後乙個執行緒對取消請求做出響應

#include

void exit (int status);

void _exit (int status);

#include

void _exit (status);

其中呼叫 _exit,_exit 都不會呼叫終止程式

異常終止也不會。

與析構函式的呼叫順序:

在atexit(f)呼叫之前被靜態分配的物件的析構函式將在f()的呼叫之後被呼叫。在乙個atexit(f)呼叫之後建立的這種物件的析構函式將在f的呼叫之前被呼叫。

呼叫順序:在乙個程式中可以用atexit()註冊幾個處理函式(註冊次數依賴於你的編譯器),這些處理函式的呼叫順序與其註冊的順序相反,也即最先註冊的最後呼叫,最後註冊的最先呼叫。

atexit函式詳解

對c語言有所了解的人都知道main函式是整個程式的入口,但是其實不然,在核心中可以使用鏈結器來設定程式的開始地方。當核心使 個exec函式執 c程式時,在調 main函式之前先調 個特殊的啟動例程,可執 程式將此例程指定為程式的起始位址。啟動例程從核心獲取命令 引數和環境變數,然後為調 main函式...

atexit 函式呼叫

函式名 atexit 標頭檔案 include 功 能 註冊終止函式 即main執行結束後呼叫的函式 用 法 int atexit void func void 按照iso c的規定,乙個程序可以登記多達32個函式,這些函式將由exit自動呼叫。atexit 註冊的函式型別應為不接受任何引數的voi...

驗證atexit 函式

按照iso c的規定,乙個程序可以登記至少32個函式,這些函式將由exit自動呼叫。乙個程序可以登記若干個函式,這些函式由 exit自 動呼叫,這些函式被稱為終止處理函式,atexit 函式可以登記這些函式。exit 呼叫終止處理函式的順 序和atexit 登記的順序相反,如果乙個函式被多次登記,也...