按照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 所指定的函...