1、atexit函数的原型
int atexit(void (*function)(void));
2、用来注册函数,进程死亡,之前调用被注册的函数
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <unistd.h>
4
5 void func1(void)
6 {
7 printf("func1\n");
8 }
9
10 void func2(void)
11 {
12 printf("func2\n");
13 }
14
15 int main(void)
16 {
17 printf("hello word\n");
18 atexit(func1);
19 atexit(func2);
20 return 0;
//exit(0); 和return 0一样,会最后执行func1和func2函数
//_exit(0); 不执行了func1和fun2函数
21 }
运行结果是:
hello word
func2
func1
3、atexit把注册的函数指针存在栈中,所以被注册的函数,先注册的后执行(和栈的先进后出一样)。
4、exit(0)和return 0 一样会执行注册了的函数,_exit(0)不会执行注册了的函数。