[英]Mac OS X equivalent for TerminateProcess(GetCurrentProcess,0);
我正在尋找一種簡單且無法捕獲的方法來終止我的C ++應用程序的Mac端口。 在我使用的Windows中
TerminateProcess(GetCurrentProcess, 0);
我可以在Mac OS X / XCode / GCC上使用的等效命令是什么?
實際上,如果你想擁有與TerminateProcess
相同的語義,你想要_exit
。 exit
語義與ExitProcess
更緊密地對齊。
更接近ProcessTerminate將發送一個帶有kill的SIGKILL ,它們都會立即終止當前進程而不能被捕獲。 這與_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.