Home C&C++函数库 c++ 语法 程序源码 Linux C库

atexit

函数   <cstdlib>

C int atexit (void (*func)(void));
C++98 extern "C" int atexit (void (*func)(void));
extern "C++" int atexit (void (*func)(void));
C++11 extern "C" int atexit (void (*func)(void)) noexcept;
extern "C++" int atexit (void (*func)(void)) noexcept;


设置退出时要执行的操作

当程序正常终止时,将自动调用func所指向的函数,不带参数。

如果不同调用指定了多个atexit函数,它们会以栈的方式执行 (即最后指定的函数是在退出时第一个执行的函数)。

一个函数可以注册为在退出时多次执行。

如果在exit之后调用atexit,则调用是否成功取决于特定的系统和库实现(未指定的行为)。

如果一个注册了atexit的函数抛出了一个异常,当调用终止时它没有提供一个处理程序,terminate会自动调用(c++)。

特定的库实现可能会对atexit中可以注册的函数调用的数量施加限制,但不能少于32个。

☲  参数



function
要调用的函数。该函数不返回任何值,也不接受任何参数。

☉  返回值



如果函数成功注册,则返回一个零值。

如果失败,则返回一个非零值。

☣  示例



/* atexit example */
#include <stdio.h>      /* puts */
#include <stdlib.h>     /* atexit */

void fnExit1 (void)
{
  puts ("Exit function 1.");
}

void fnExit2 (void)
{
  puts ("Exit function 2.");
}

int main ()
{
  atexit (fnExit1);
  atexit (fnExit2);
  puts ("Main function.");
  return 0;
}


输出:

Main function.
Exit function 2.
Exit function 1.

↭  数据竞争



并发地调用这个函数不会引入数据竞争(c++):调用会在进程级正确地同步。

❆  异常(c++)



无抛出保证:此函数从不抛出异常。

🍄  另请参阅



exit 终止调用进程(function )
abort 中止当前进程(function )

联系我们 免责声明 关于CandCplus 网站地图