C++程序员可以通过atexit注册一个函数,该函数在程序退出时执行。
atexit调用处,函数注册成功返回0值,否者返回非0;
当atexit注册多个函数时,注册函数执行体将被依次压入栈,程序退出时退栈执行。
abort函数表示程序一个意外的终止,它不会清理出错后的额外情况,例如:不会调对象的析构函数,不会将调用返回atexit的注册函数。
exit也是表示一个程序的终止,它与abort最大的不同是:它是负责任的退出,调对象的析构函数,将调用返回atexit的注册函数,最后向系统返回退出状态。
来看一个来自cplusplus的示例:
Output:
Main function. Exit function 2. Exit function 1. |