Linux下C编程经验积累-atexit注册的自定义exit函数的触发时机

我们都知道,可以用atexit来注册一个我们自己写的函数作为exit函数,也就是说,在程序退出的时候,会调用到我们的这个自定义exit函数。问题是:

在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页,有更详细的说明和例子
posted @ 2011-04-05 09:57  super119  阅读(588)  评论(0编辑  收藏  举报