终止调用进程。
exit 函数会在清除后终止调用进程; _exit 和 _Exit 会立即终止调用进程。
注意
请勿使用此方法关闭通用 Windows 平台 (UWP) 应用,除非在测试或调试方案中。 根据 Microsoft Store 策略,禁止以编程或 UI 方式关闭 Store 应用。 有关详细信息,请参阅 UWP 应用生命周期。 有关 UWP 应用的详细信息,请参阅通用 Windows 平台文档。
语法
void exit(
int const status
);
void _Exit(
int const status
);
void _exit(
int const status
);
参数
status
退出状态代码。
备注
exit、 _Exit 和 _exit 函数会终止调用进程。
exit 函数调用线程本地对象的析构函数,然后按照后进先出 (LIFO) 顺序调用由 atexit 和 _onexit注册的函数,接着在函数终止进程之前刷新所有文件缓冲区。
_Exit 和 _exit 函数会终止进程,同时无需销毁线程本地对象或处理 atexit 或 _onexit 函数,且无需刷新流缓冲区。
尽管 exit、_Exit 和 _exit 调用不返回值,status 中的值在进程退出后提供给主机环境或等待调用进程(如果存在)。 通常情况下,调用方将 status 值设置为 0 来指示正常退出,或设置为其他值来指示错误。
status 值可用于操作系统批处理命令 ERRORLEVEL ,并且由两个常量之一表示: EXIT_SUCCESS或 EXIT_FAILURE,前者表示值为 0,后者表示值为 1。
exit、 _Exit、 _exit、 quick_exit、 _cexit和 _c_exit 函数的行为如下:
| 函数 | 说明 |
|---|---|
exit |
执行完整的 C 库终止过程,终止进程,并向主机环境提供提供的状态代码。 |
_Exit |
执行最少的 C 库终止过程,终止进程,并向主机环境提供提供的状态代码。 |
_exit |
执行最少的 C 库终止过程,终止进程,并向主机环境提供提供的状态代码。 |
quick_exit |
执行快速的 C 库终止过程,终止进程,并向主机环境提供提供的状态代码。 |
_cexit |
执行完整的 C 库终止过程并返回给调用方。 不终止进程。 |
_c_exit |
执行最少的 C 库终止过程并返回给调用方。 不终止进程。 |
调用 exit、_Exit 或 _exit 函数时,不会调用在调用时存在的任何临时或自动对象的析构函数。 自动对象是在函数中定义的非静态本地对象。 临时对象是由编译器创建的对象,例如函数调用返回的值。 若要在调用 exit、_Exit 或 _exit 之前销毁自动对象,请显式调用该对象的析构函数,如下所示:
void last_fn() {}
struct SomeClass {} myInstance{};
// ...
myInstance.~SomeClass(); // explicit destructor call
exit(0);
}
不要使用 DLL_PROCESS_ATTACH 从 exit 调用 DllMain。 若要退出 DLLMain 函数,请从 FALSE 返回 DLL_PROCESS_ATTACH。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 CRT 中的全局状态。
要求
| 函数 | 必需的标头 |
|---|---|
| .- . |
<process.h> 或 <stdlib.h> |
有关兼容性的详细信息,请参阅 兼容性。
示例
// crt_exit.c
// This program returns an exit code of 1. The
// error code could be tested in a batch file.
#include <stdlib.h>
int main( void )
{
exit( 1 );
}
另请参阅
进程和环境控制
abort
atexit
%>
_exec、_wexec 函数
%>
quick_exit
_spawn、_wspawn 函数
%>