#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void func1(void)
{
printf("func1\n");
}
void func2(void)
{
printf("func2\n");
}
int main(void)
{
printf("hello world.\n");
// 当进程被正常终止时,系统会自动调用这里注册的func1执行
atexit(func2);
atexit(func1);
printf("my name is lilei hanmeimei\n");
//return 0;
//exit(0);
_exit(0);
}
// 当进程被正常终止时,系统会自动调用这里注册的func1执行
atexit(func1);
atexit(func2);
return 0;
}
1.对于API atexit,只有进程正常终止时,系统会调用注册的函数
2.atexit注册多个进程终止处理函数,先注册的后执行(先进后出,和栈一样)
3.return、exit和_exit的区别:return和exit效果一样,都是会执行进程终止处理函数,但是用_exit终止进程时并不执行atexit注册的进程终止处理函数。
3.return、exit和_exit的区别:return和exit效果一样,都是会执行进程终止处理函数,但是用_exit终止进程时并不执行atexit注册的进程终止处理函数。