2

我正在寻找一种简单且无法捕获的方法来终止我的 C++ 应用程序的 Mac 端口。在我使用的 Windows 中

TerminateProcess(GetCurrentProcess, 0);

我可以在 Mac OS X / XCode / GCC 上使用的等效命令是什么?

4

5 回答 5

7

实际上,_exit如果您想要与TerminateProcess. exit语义与ExitProcess.

于 2009-02-19T16:22:05.380 回答
3

更接近ProcessTerminate将发送一个带有kill的SIGKILL,两者都会立即终止当前进程并且不能被捕获。这与_exit相同

kill(getpid(), SIGKILL);
于 2009-02-19T17:13:08.197 回答
1

退出(0);


于 2009-02-19T16:16:08.947 回答
1

请记住,如果您调用 exit() 或 TerminateProcess(),您将立即终止应用程序,即没有析构函数调用,也没有完成您可能期望完成的清理(当然,操作系统会清理它所能做的一切) .

于 2009-02-19T16:48:15.560 回答
1

实际上,exit() 和 _exit() 都涉及 CRT,这意味着仍然需要执行各种操作。(不确定atexit,我没有检查)

Windows 上的 TerminateProcess 位于操作系统级别,因此它回避了所有 CRT。如果你想在 Mac 上做同样的事情,你最好的办法是用 mach 函数弄脏你的手。在这种情况下:

#include <mach/mach.h>

... // lots of your code here

task_terminate(mach_task_self());

这几乎是你所能得到的。

于 2010-10-28T21:26:03.487 回答