2

C++ アプリケーションの Mac ポートを終了するための簡単でキャッチできない方法を探しています。私が使用していたWindowsで

TerminateProcess(GetCurrentProcess, 0);

Mac OS X / XCode / GCC で使用できる同等のコマンドは何ですか?

4

5 に答える 5

7

_exitと同じセマンティクスが必要な場合は、実際に必要ですTerminateProcessexitセマンティクスは とより密接に連携していExitProcessます。

于 2009-02-19T16:22:05.380 に答える
3

ProcessTerminateに近いのは、killを指定してSIGKILLを送信することです。どちらも、現在のプロセスをすぐに終了し、トラップすることはできません。これは_exitと同じです

kill(getpid(), SIGKILL);
于 2009-02-19T17:13:08.197 に答える
1

終了 (0);


于 2009-02-19T16:16:08.947 に答える
1

実際には、exit() と _exit() の両方に CRT が関与しているため、さまざまなアクションが引き続き実行されます。(atexitについてはわかりません。チェックしていません)

Windows の TerminateProcess は OS レベルであるため、すべての CRT を回避します。Mac で同じことをしたい場合は、mach 関数で手を汚すのが最善の策です。この場合:

#include <mach/mach.h>

... // lots of your code here

task_terminate(mach_task_self());

それはあなたが得ることができるのと同じくらいキャッチ不可能です。

于 2010-10-28T21:26:03.487 に答える
1

exit() または TerminateProcess() を呼び出すと、アプリケーションがすぐに終了することに注意してください。つまり、デストラクタが呼び出されず、実行されると予想されるクリーンアップが実行されません (もちろん、OS は可能な限りすべてをクリーンアップします)。 .

于 2009-02-19T16:48:15.560 に答える