簡體   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