exit、_exit

停止调用的处理—exit 在清理之后终止它;_exit 立即终止它。

备注

不要使用此方法关闭 Windows 应用商店 应用程序,除非在测试或调试方案中。根据 的3.6节Windows 8 应用程序证书要求,禁止以编程或 UI 方式关闭 Windows 应用商店 应用程序。有关详情,请参阅应用程序生命周期(Windows 应用商店应用)

void exit( 
   int status 
);
void _exit( 
   int status 
);

参数

  • status
    退出状态。

备注

exit 和 _exit 函数终止调用进程。 exit调用 atexit 和 _onexit注册的后进先出 (LIFO) 的排序函数,然后在终止处理之前刷新所有的文件缓冲区。 _exit 终止进程,不处理 atexit 和 _onexit,也不刷新流缓冲区。 特别地,status 值设置为 0 表示正常退出或设置到某些其他值指示错误。

虽然 exit 和 _exit 调用没有返回值,但是在调用进程退出后,如果一个存在返回值, status 的低位字节可用于等待的调用进程。 status 值对操作系统的批处理命令 ERRORLEVEL 可用并且由两个常数之一表示:EXIT_SUCCESS表示值为 0,而 EXIT_FAILURE表示值为 1。 exit、_exit、_cexit和 _c_exit 表现如下。

功能

描述

exit

执行完整的 C 库停止程序,终止该进程,并以所提供的状态代码退出。

_exit

执行快速的 C 库停止程序,终止该进程,并以所提供的状态代码退出。

_cexit

执行完整的 C 库停止程序并返回调用方,但是不会终止进程。

_c_exit

执行快速的 C 库停止程序并返回调用方,但是不会终止进程。

当调用exit 或 _exit 的功能时,析构函数在调用时存在的任何临时或自动对象不会被调用。 一个自动对象在对象没有声明为静态函数被定义。 临时对象是由编译器创建的对象。 若要在调用 exit 或 _exit之前销毁一个自动对象,请显式调用该对象的析构函数,如下所示:

myObject.myClass::~myClass();

不要使用 DLL_PROCESS_ATTACH 调用来自 DllMain的 exit。 如果想要退出 DLLMain 函数,请从 DLL_PROCESS_ATTACH的 FALSE 返回。

要求

功能

必需的标头

exit

<process.h> 或 <stdlib.h>

_exit

<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 );
}

.NET Framework 等效项

System::Diagnostics::Process::Kill

请参见

参考

进程和环境控制

abort

atexit

_cexit、_c_exit

_exec、_wexec 函数

_onexit、_onexit_m

_spawn、_wspawn 函数

system、_wsystem