有没有办法停止执行,有点像SIG_ABRT,但立即,即使我们不在主线程上?
答案 0 :(得分:3)
Core Foundation有一个宏HALT
应该可以解决问题,如果真的,真的认为有必要这样做:
#if defined(__ppc__)
#define HALT do {asm __volatile__("trap"); kill(getpid(), 9); } while (0)
#elif defined(__i386__) || defined(__x86_64__)
#if defined(__GNUC__)
#define HALT do {asm __volatile__("int3"); kill(getpid(), 9); } while (0)
#elif defined(_MSC_VER)
#define HALT do { DebugBreak(); abort(); } while (0)
#else
#error Compiler not supported
#endif
#endif
#if defined(__arm__)
#define HALT do {asm __volatile__("bkpt 0xCF"); kill(getpid(), 9); } while (0)
#endif
答案 1 :(得分:1)
如果您使用的是Macintosh应用,“[[NSApp sharedApplication] terminate: self]
”将有效。
在iPhone上,您甚至可以执行“exit(-1)
”,但Apple会 不 接受任何突然或以任何方式终止的应用程序用户自己查杀应用程序。 Here is a related question with some useful answers for you
答案 2 :(得分:0)
假设你不喜欢具有一些清理语义的exit()或_exit(),你可以使用s
#include <signal.h>
kill( getpid(), SIGKILL );
如果你在Windows上(假设不是'cocoa'标记),你可以使用
TerminateProcess( GetCurrentProcess(), -1 );
这一切都非常严厉,所以要做到这一点应该是非常糟糕的。