atexit()

来源:互联网 发布:java 高并发 高性能 编辑:程序博客网 时间:2024/05/23 20:34

按照ISO C的规定,一个进程可以登记多达32个函数,这些函数将由exit自动调用。atexit()注册的函数类型应为不接受任何参数的void函数。

基本信息

  • 外文名称

    atexit

  • 头文件

    #include<stdlib.h>

 
  • 用 法

    void atexit

  • 功 能

    注册终止函数

简介


函数名: atexit

头文件:#include<stdlib.h>

功 能: 注册终止函数(即main执行结束后调用的函数)

用 法: void atexit(void (*func)(void));

注意:exit调用这些注册函数的顺序与它们 登记时候的顺序相反。同一个函数如若登记多次,则也会被调用多次。

折叠程序




#include <stdio.h>

#include <stdlib.h>

void exit_fn1(void)

{

printf("Exit function #1 called\n");

}

void exit_fn2(void)

{

printf("Exit function #2 called\n");

}

int main(void)

{

/* post exit function #1 */

atexit(exit_fn1);

/* post exit function #2 */

atexit(exit_fn2);

return 0;

}

输出:

Exit function #2 called

Exit function #1 called

进程的终止方式:

有8种方式使进程终止,其中前5种为正常终止,它们是

1:从 main 返回

2:调用 exit

3:调用 _exit 或 _Exit

4:最后一个线程从其启动例程返回

5:最后一个线程调用pthread_exit

异常终止有3种,它们是

6:调用 abort

7:接到一个信号并终止

8:最后一个线程对取消请求做出响应

#include <stdlib.h>

void exit (int status);

void _Exit (int status);

#include <unistd.h>

void _exit (status);

其中调用 _exit,_Exit 都不会调用终止程序

异常终止也不会。


0 0