命名空间
变体
操作

atexit

来自 cppreference.cn
< c‎ | program
在头文件 <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 函数 (p: 255)
  • C11 标准 (ISO/IEC 9899:2011)
  • 7.22.4.2 atexit 函数 (p: 350)
  • C99 标准 (ISO/IEC 9899:1999)
  • 7.20.4.2 atexit 函数 (p: 315)
  • C89/C90 标准 (ISO/IEC 9899:1990)
  • 7.10.4.2 atexit 函数 (p: 156)

[编辑] 参阅

注册一个函数,以便在调用 quick_exit 时被调用
(function) [编辑]
C++ 文档 关于 atexit