驗證atexit 函式

2021-07-30 20:00:07 字數 1317 閱讀 2035

按照iso c的規定,乙個程序可以登記至少32個函式,這些函式將由exit自動呼叫。

乙個程序可以登記若干個函式,這些函式由

exit自

動呼叫,這些函式被稱為終止處理函式,

atexit

函式可以登記這些函式。

exit

呼叫終止處理函式的順

序和atexit

登記的順序相反,如果乙個函式被多次登記,也會被多次呼叫。

atexit函式是乙個特殊的函式,它是在正常程式退出時呼叫的函式,我們把他叫為登記函式(函式原型:

int atexit (void (*)(void))

函式名: atexit

標頭檔案:#include

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

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

void

));

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

程序終止

程序終止的方式有

8種,前

5種為正常終止,後三種為異常終止:1 從

main

函式返回;2 調

用exit

函式;3

呼叫_exit

或_exit;

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

5 最後乙個執行緒呼叫

pthread_exit;6

呼叫abort

函式;

7 接到乙個訊號並終止; 8

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

下面我們演示一下atexit()函式的程式示例:

然後我們通過編寫makefile實現編譯

然後我們執行**

我們可以根據上面的函式,進行對比看到:

在主函式中,是先列印輸出語句,再呼叫fun3函式,再呼叫fun2函式,最後呼叫fun1函式的,即

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自動呼叫.通常這32個函式被稱為終止處理程式,並呼叫atexit函式來登記這些函式,atexit 註冊的函式型別應為不接受任何引數的void函式,當程式通過呼叫exit 或從main 中返回時,引數function 所指定的函...