1476

7 分钟

#C 语言标准库函数 atexit

/********************************************* * @brief 注册程序正常退出前的清理函数 * @param func 要注册的清理函数 * @return 示成(0)或失败(非 0) ********************************************/ int atexit(void (*func)(void));

说明

注册程序正常退出前的清理函数。

在程序正常退出(调用 exitmain 函数返回)时,清理函数将按照注册的相反顺序被调用。

清理函数的数量限制由具体实现决定,至少支持 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 注册了 func1func2 两个清理函数,退出时执行。

  • 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)

创建于 2025/7/25

更新于 2025/8/1