Namespaces
Variants

atexit

From cppreference.net
定义于头文件 <stdlib.h>
int atexit ( void ( * func ) ( void ) ) ;

注册由 func 指向的函数,使其在程序正常终止时(通过 exit() 或从 main() 返回)被调用。这些函数将按照注册顺序的逆序执行,即最后注册的函数将最先执行。

同一函数可能被多次注册。

该实现保证至少支持注册 32 个函数。具体上限由实现定义。

目录

参数

func - 指向正常程序终止时要调用的函数的指针

返回值

0 表示注册成功,非零值表示注册失败。

示例

#include <stdlib.h>
#include <stdio.h>
void f1(void)
{
    puts("f1");
}
void f2(void)
{
    puts("f2");
}
int main(void)
{
    if ( ! atexit(f1) && ! atexit(f2) && ! atexit(f2) )
        return EXIT_SUCCESS ;
    // atexit registration failed
    return EXIT_FAILURE ;
}   // <- if registration was successful calls f2, f2, f1

输出:

f2
f2
f1

参考文献

  • C17 标准 (ISO/IEC 9899:2018):
  • 7.22.4.2 atexit 函数 (页: 255)
  • C11 标准 (ISO/IEC 9899:2011):
  • 7.22.4.2 atexit 函数 (p: 350)
  • C99标准(ISO/IEC 9899:1999):
  • 7.20.4.2 atexit函数(页:315)
  • C89/C90 标准 (ISO/IEC 9899:1990):
  • 7.10.4.2 atexit 函数 (页码: 156)

参见

注册在调用 quick_exit 时要执行的函数
(函数)
C++ 文档 关于 atexit