使用 atexit()函数,可注册退出处理程序。函数原型为
#include <stdlib.h> int atexit(void (*function)(void));
|
atexit() 函数的参数是一个函数地址,它所指向的函数就是要注册的函数,当进程正常终止时会调用这个被注册的函数。调用此函数时,无需向它传送任何参数,也不期望它返回一个值。exit 以登记这些函数的相反顺序调用它们。同一函数如若登记多次,则同样会被调用多次。
一般来说,至少可以注册 32 个函数。实际上,可用的内存大小限制了可以使用 atexit 注册的函数数量。可以使用 sysconf 的 _SC_ATEXIT_MAX 参数来确定退出处理程序的最大数量。
例子:
#include <stdio.h> #include <stdlib.h>
static void eh1 (void); static void eh2 (void);
int main (void) { if (atexit(eh2) != 0) printf("Can't register eh2"); if (atexit(eh2) != 0) printf("Can't register eh2");
if (atexit(eh1) != 0) printf("Can't register eh1");
printf("Returning from main\n");
return 0; }
static void eh1 (void) { printf("First exit handler\n"); } static void eh2 (void) { printf("Second exit handler\n");
|
运行及输出:
Returning from main
First exit handler
Second exit handler
Second exit handler
阅读(1557) | 评论(0) | 转发(1) |