-
atexit
鎖定
按照ISO C的規定,一個進程可以登記至少32個函數,這些函數將由exit自動調用。atexit()註冊的函數類型應為不接受任何參數的void函數。
- 外文名
- atexit
- 頭文件
- #include
- 功 能
- 註冊終止函數
- 用 法
- void atexit
atexit函數介紹
函數名: atexit
頭文件:#include<stdlib.h>
功 能: 註冊終止函數(即main執行結束後調用的函數)
用 法: void atexit(void (*func)(void));
注意:exit調用這些註冊函數的順序與它們 登記時候的順序相反。同一個函數如若登記多次,則也會被調用多次。
atexit程序例
#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調用順序
在atexit(f)調用之前被靜態分配的對象的析構函數將在f()的調用之後被調用。在一個atexit(f)調用之後建立的這種對象的析構函數將在f的調用之前被調用。引自《The C++ Programming Language》(Bjarne Stroustrup)
- 詞條統計
-
- 瀏覽次數:次
- 編輯次數:25次歷史版本
- 最近更新: JD萤火虫003