Linux下C编程经验积累-atexit注册的自定义exit函数的触发时机
我们都知道,可以用atexit来注册一个我们自己写的函数作为exit函数,也就是说,在程序退出的时候,会调用到我们的这个自定义exit函数。问题是:
在Linux下终结一个C程序,最普遍的有两种做法:
1、在main函数中调用return
2、在任何地方调用 "exit" system call
试验证明,这两种方法都会触发我们自定义的exit函数,写的测试程序如下:
可以参考APUE2一书的P150页,有更详细的说明和例子
在Linux下终结一个C程序,最普遍的有两种做法:
1、在main函数中调用return
2、在任何地方调用 "exit" system call
试验证明,这两种方法都会触发我们自定义的exit函数,写的测试程序如下:
- Code: Select all
#include "apue.h"
static void my_exit(void);
int main(void)
{
if (atexit(my_exit) != 0)
err_sys("can't register my_exit");
return 0;
printf("main is done\n");
//return 0;
}
static void my_exit(void)
{
printf("Stuff print in my_exit\n");
}
可以参考APUE2一书的P150页,有更详细的说明和例子