立即停止应用程序执行

时间:2012-03-27 22:57:14

标签: objective-c c cocoa

有没有办法停止执行,有点像SIG_ABRT,但立即,即使我们不在主线程上?

3 个答案:

答案 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 );

这一切都非常严厉,所以要做到这一点应该是非常糟糕的。