约 1463 字

约 7 分钟

#C 语言标准库函数 at_quick_exit

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

说明

注册程序快速退出前的清理函数。

在程序快速退出(调用 quick_exit)时,清理函数将按照注册的相反顺序被调用。

清理函数的数量限制由具体实现决定,至少支持 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)
{
    at_quick_exit(func1);       // 先注册,后执行
    at_quick_exit(func2);       // 后注册,先执行
    quick_exit(EXIT_SUCCESS);   // 快速退出
    
    return 0;   // 不会执行
}

说明:

通过 at_quick_exit 注册了 func1 和 func2 两个清理函数,通过 quick_exit 退出时执行。

  • func1 先注册后运行
  • func2 后注册先运行

运行结果:

清理2
清理1

#推荐阅读

#参考标准

  • C17 standard (ISO/IEC 9899:2018):
    • 7.22.4.3 The at_quick_exit function (p: 255)
  • C11 standard (ISO/IEC 9899:2011):
    • 7.22.4.3 The at_quick_exit function (p: 351)

更新: 2025/10/25

作者: PlanC

创建: 2025/7/25