exit(int status)函数

2.exit(int status)函数

在C++标准中,exit()函数也可具有额外的功能。

首先,具有静态存储类型的对象被破坏,通过atexit()函数注册的函数被调用。具有静态存储类型的非局部类型对象被破坏,破坏顺序是和其构造器被执行顺序的逆序执行的。当调用exit()函数时,自动存储类型的对象不会被破坏。被atexit()函数注册的函数是按其最初注册顺序的逆序执行的。除此之外,任何之前注册的函数调用之后,其他函数才会被调用。在静态存储类型的非局部型对象被初始化之前,使用atexit()函数注册的函数是不会被调用的,直到该对象的析构过程结束。在非局部类型的静态存储类型对象初始化之后,该对象的析构过程开始之前,使用atexit()函数注册的任意函数,才会被调用。任意函数调用局部的静态类型对象的析构器时,只有该析构器是在该对象的构造器的末尾被atexit()函数注册的,该局部静态类型对象才被破坏。

其次,具有不可写入的缓冲区数据被刷新时,所有开放C流被关闭,并且所有使用tmpfile()函数创建的临时文件均被删除。

最后,函数将返回至调用该函数的环境。如果参数status是0或宏EXIT_SUCCESS,函数返回的状态为“成功终止程序”;如果参数是EXIT_FAILURE,函数返回的状态为“未成功终止”。除此之外,返回的状态是由实际环境决定的。并且exit()函数绝不会返回到它的调用者,而是直接终止程序。