#C 语言标准库函数 atexit
/*********************************************
* @brief 注册程序正常退出前的清理函数
* @param func 要注册的清理函数
* @return 示成(0)或失败(非 0)
********************************************/
int atexit(void (*func)(void));
说明
注册程序正常退出前的清理函数。
在程序正常退出(调用 exit 或 main
函数返回)时,清理函数将按照注册的相反顺序被调用。
清理函数的数量限制由具体实现决定,至少支持 32 个。
参数
func
- 要注册的清理函数
返回值
- 成功返回 0
- 失败返回非 0
#示例
#include <stdio.h>
#include <stdlib.h>
void func1(void)
{
printf("清理1\n");
}
void func2(void)
{
printf("清理2\n");
}
int main(void)
{
atexit(func1); // 先注册,后执行
atexit(func2); // 后注册,先执行
return 0; // 正常退出
}
说明:
通过 atexit
注册了 func1
和 func2
两个清理函数,退出时执行。
func1
先注册后运行func2
后注册先运行
运行结果:
清理2 清理1
#推荐阅读
#参考标准
- C17 standard (ISO/IEC 9899:2018):
- 7.22.4.2 The atexit function (p: 255)
- C11 standard (ISO/IEC 9899:2011):
- 7.22.4.2 The atexit function (p: 350)
- C99 standard (ISO/IEC 9899:1999):
- 7.20.4.2 The atexit function (p: 315)
- C89/C90 standard (ISO/IEC 9899:1990):
- 7.10.4.2 The atexit function (p: 156)