Mac OS X等效于TerminateProcess(GetCurrentProcess,0);

时间:2009-02-19 16:14:05

标签: c++ macos terminate

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

TerminateProcess(GetCurrentProcess, 0);

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

5 个答案:

答案 0 :(得分:6)

实际上,如果您想要与_exit具有相同的语义,则需要TerminateProcessexit语义与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());

这就像你能得到的一样无法捉摸。