我正在寻找一种简单且无法捕获的方法来终止我的 C++ 应用程序的 Mac 端口。在我使用的 Windows 中
TerminateProcess(GetCurrentProcess, 0);
我可以在 Mac OS X / XCode / GCC 上使用的等效命令是什么?
实际上,_exit
如果您想要与TerminateProcess
. exit
语义与ExitProcess
.
更接近ProcessTerminate将发送一个带有kill的SIGKILL,两者都会立即终止当前进程并且不能被捕获。这与_exit相同
kill(getpid(), SIGKILL);
退出(0);
请记住,如果您调用 exit() 或 TerminateProcess(),您将立即终止应用程序,即没有析构函数调用,也没有完成您可能期望完成的清理(当然,操作系统会清理它所能做的一切) .
实际上,exit() 和 _exit() 都涉及 CRT,这意味着仍然需要执行各种操作。(不确定atexit,我没有检查)
Windows 上的 TerminateProcess 位于操作系统级别,因此它回避了所有 CRT。如果你想在 Mac 上做同样的事情,你最好的办法是用 mach 函数弄脏你的手。在这种情况下:
#include <mach/mach.h>
... // lots of your code here
task_terminate(mach_task_self());
这几乎是你所能得到的。