exit与atexit
一、exit()函数
函数声明:void exit(int state);
exit()函数用于在程序运行的过程中随时结束程序,exit的参数state是返回给操作系统,返回0表示程序正常结束,非0表示程序非正常结束。main函数结束时也会隐式地调用exit函数。exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件。
二、atexit()函数
函数声明:int atexit(void (*func)(void));
下面是一段代码示例:
#include <stdlib.h> // 使用atexit()函数所必须包含的头文件stdlib.h
#include <iostream.h>
void terminateTest()
{
}
int main(void)
{
}
程序的运行结果为:
the end of main()
程序正在结束...
这些函数都是在main结束以后才被调用的。atexit只是注册他们,使得他们在main结束以后被调用,看名字就可以看出来。
-----------------------------以上为转载-----------------------------------------
个人测试时发现,即便程序被kill掉,也会执行atexit里注册的函数。