我正在寻找一种简单且无法捕获的方法来终止我的C ++应用程序的Mac端口。在Windows中我使用
TerminateProcess(GetCurrentProcess, 0);
我可以在Mac OS X / XCode / GCC上使用的等效命令是什么?
答案 0 :(得分:6)
实际上,如果您想要与_exit
具有相同的语义,则需要TerminateProcess
。 exit
语义与ExitProcess
更紧密地对齐。
答案 1 :(得分:3)
越接近ProcessTerminate将发送SIGKILL kill,两者都会立即终止当前进程并且无法被捕获。这与_exit
相同kill(getpid(), SIGKILL);
答案 2 :(得分:1)
出口(0);
答案 3 :(得分:1)
请记住,如果您调用exit()或TerminateProcess(),您将立即终止应用程序,即没有析构函数调用,您可能希望完成的清理工作完成(当然操作系统会清除所有内容)它可以)。
答案 4 :(得分:1)
实际上,exit()和_exit()都涉及CRT,这意味着仍然会采取各种操作。 (不确定atexit,我还没检查过)
Windows上的TerminateProcess是在操作系统级别上,因此它会回避所有CRT。如果你想在Mac上做同样的事情,你最好的选择是用马赫功能弄脏你的手。在这种情况下:
#include <mach/mach.h>
... // lots of your code here
task_terminate(mach_task_self());
这就像你能得到的一样无法捉摸。