1.atexit注册进程终止处理函数,在进程结束时,atexit注册的函数会被执行。
2.atexit注册多个进程终止处理函数,先注册的后执行(先进后出,和栈一样)
3.return、exit和_exit的区别:return和exit效果一样,都是会执行进程终止处理函数,但是用_exit终止进程时并不执行atexit注册的进程终止处理函数。
#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); //注意观察_exit(0);和return 0;exit(0);的不同表现
}