.- .
终止调用进程。 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
从 DllMain
调用 exit
。 若要退出 DLLMain
函数,请从 DLL_PROCESS_ATTACH
返回 FALSE
。
默认情况下,此函数的全局状态范围限定为应用程序。 若要更改此行为,请参阅 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
函数
%>