命名空间
变体
操作

atexit

来自 cppreference.com
< 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 调用时调用的函数
(函数) [编辑]
C++ 文档atexit