atexit

< c‎ | program
定义于头文件 <stdlib.h>
int atexit( void (*func)(void) );

注册 func 所指向的函数,使它在程序正常终止(通过 exit() 或从 main() 返回)时得到调用。将以注册顺序的逆序调用这些函数,即首先执行最后调用的函数。

可以注册同一函数多于一次。

atexit 是线程安全的:多个线程调用此函数不会引入数据竞争。

标准保证至少支持注册 32 个函数。准确极限是实现定义的。

参数

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

返回值

若注册成功则为 0 ,否则为非零值。

示例

#include <stdlib.h>
#include <stdio.h>
 
void f1(void)
{
    puts("pushed first");
}
 
void f2(void)
{
    puts("pushed second");
}
 
int main(void)
{
    atexit(f1);
    atexit(f2);
}

输出:

pushed second
pushed first

引用

  • 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):
  • 4.10.4.2 The atexit function

参阅

注册要在调用 quick_exit 时调用的函数
(函数)