atexit

按照ISO C的規定,一個進程可以登記至少32個函式,這些函式將由exit自動調用。atexit()註冊的函式類型應為不接受任何參數的void函式。

函式介紹

函式名: atexit

頭檔案:#include<stdlib.h>

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

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

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

程式例

#include <stdio.h>

#include <stdlib.h>

void exit_fn1(void)

{

printf("Exit function #1 called\n");

}

void exit_fn2(void)

{

printf("Exit function #2 called\n");

}

int main(void)

{

/* post exit function #1 */

atexit(exit_fn1);

/* post exit function #2 */

atexit(exit_fn2);

return 0;

}

輸出:

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 <stdlib.h>

void exit (int status);

void _Exit (int status);

#include <unistd.h>

void _exit (status);

其中調用 _exit,_Exit 都不會調用終止程式

異常終止也不會。

調用順序

在atexit(f)調用之前被靜態分配的對象的析構函式將在f()的調用之後被調用。在一個atexit(f)調用之後建立的這種對象的析構函式將在f的調用之前被調用。引自《The C++ Programming Language》(Bjarne Stroustrup)

相關詞條

相關搜尋

熱門詞條

聯絡我們