【Linux】linux下atexit()函数的使用


函数名: atexit
头文件:#include<stdlib.h>
功 能: 注册终止函数
用 法: void atexit(void (*func)( void )); 

      atexit函数是一个特殊的函数,它是在正常程序退出时调用,来对终止处理函数进行登记。我们把它叫为登记函数 。按照ISOC的规定,一个进程可以登记多达32个函数,这些函数的函数类型应为不接受任何参数的void函数,这些函数将由exit自动调用,函数类型应为不接受任何参数的void函数,这些函数被称为终⽌处理函数。
      exit调⽤终⽌处理函数的顺序和atexit登记的顺序相反,如果⼀个函数被多次登记,也会被多次调⽤。


以下函数的调用时程序异常或者正常终止:

进程终⽌的⽅式有8种,前5种为正常终⽌,后三种为异常终⽌:
1 从main函数返回;
2 调⽤exit函数;
3 调⽤_exit或_Exit;
4 最后⼀个线程从启动例程返回;
5 最后⼀个线程调⽤pthread_exit;
6 调⽤abort函数;
7 接到⼀个信号并终⽌;
8 最后⼀个线程对取消请求做出响应。

用以下程序验证:
#include<stdio.h>
#include<stdlib.h>

void fun1()
{
    printf("fun1()\n");
}

void fun2()
{
    printf("fun2()\n");
}

void fun3()
{
    printf("fun3()\n");
}

int main()
{
    atexit(fun1);
    atexit(fun2);
    atexit(fun3);
    atexit(fun2);
    atexit(fun2);
    return 0;
    
}


在Linux下运行:



执行结果:


通过结果,验证了之前的结论:
exit调⽤终⽌处理函数的顺序和atexit登记的顺序相反,如果⼀个函数被多次登记,也会被多次调⽤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值