我们先来看一个程序:

#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)。






本文转载:CSDN博客