我们先来看一个程序:
#include <stdio.h>
void fun1()
{
printf("fun1\n");
}
void fun2()
{
printf("fun2\n");
}
int main()
{
atexit(fun1);
atexit(fun1);
atexit(fun2);
printf("main\n");
return 0;
}
结果为(注意, 回调顺序刚好与注册顺序相反):
main
fun2
fun1
fun1
atexit函数是一个登记函数, 相当于一个登记处, 让别人来注册, 一般而言, 一个进程可登记的函数个数是有限制的, 通常是32个。 在程序退出的时候, 登记处会自动回调用注册的函数(实际上就是回调函数, 比如上面的fun1, fun2)。