繁体   English   中英

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

[英]Mac OS X equivalent for TerminateProcess(GetCurrentProcess,0);

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

TerminateProcess(GetCurrentProcess, 0);

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

实际上,如果你想拥有与TerminateProcess相同的语义,你想要_exit exit语义与ExitProcess更紧密地对齐。

更接近ProcessTerminate将发送一个带有killSIGKILL ,它们都会立即终止当前进程而不能被捕获。 这与_exit相同

kill(getpid(), SIGKILL);

实际上,exit()和_exit()都涉及CRT,这意味着仍然会采取各种操作。 (不确定atexit,我还没检查)

Windows上的TerminateProcess是在操作系统级别上,因此它会回避所有CRT。 如果你想在Mac上做同样的事情,你最好的选择是用马赫功能弄脏你的手。 在这种情况下:

#include <mach/mach.h>

... // lots of your code here

task_terminate(mach_task_self());

那就像你能得到的一样无法捕捉。

出口(0);


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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM