有没有办法停止执行,有点像SIG_ABRT,但是立即,即使我们不在主线程中?立即暂停应用程序执行
3
A
回答
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
如果您使用的是Macintosh应用程序,“[[NSApp sharedApplication] terminate: self]
”将起作用。
通过iPhone,你甚至可以做“exit(-1)
”,但苹果将不接受突然或以任何方式终止用户以外杀死自己的应用程序的所有应用。 Here is a related question with some useful answers for you。
0
假设你不喜欢的exit()或_exit( ),其中有一些清理工作的语义,你可以使用S
#include <signal.h>
kill(getpid(), SIGKILL);
去,如果你使用的是Windows(假设没有因为“可可”的标签),您可以使用
TerminateProcess(GetCurrentProcess(), -1);
这是非常苛刻的,所以事情应该是非常糟糕的做到这一点。
相关问题
- 1. 暂停执行angularjs应用程序
- 2. Java暂停程序执行
- 3. 立即暂停广告
- 4. 线程暂停执行Tkinter程序
- 5. 如何按暂停按钮时暂停程序执行
- 6. 如何暂停执行C#.NET程序?
- 7. 暂停应用程序
- 8. Qt应用程序暂停
- 9. Python暂停线程执行
- 10. 暂停执行
- 11. 暂停测试执行,直到应用程序变为空闲
- 12. 暂停代码的执行,而不是应用程序
- 13. 在C#应用程序中添加暂停以执行
- 14. 问题与程序立即执行
- 15. UIAlertController立即执行处理程序
- 16. 启动后立即在Win CE中执行.net应用程序
- 17. Android:执行我的asynctask立即崩溃应用程序
- 18. 立即执行
- 19. 的ClickOnce安装立即停止执行
- 20. 如何在WPF中立即暂停SpVoice?
- 21. 在动画运行时暂停执行iOS应用程序的主线程
- 22. Java暂停执行
- 23. 执行hsqldb立即执行
- 24. 即使应用程序被暂停,UWP位置跟踪
- 25. 控制(播放/暂停)独立应用程序中的VLC
- 26. 优雅地(即最终合作)暂停线程执行
- 27. 暂停执行远程进程(C,Windows)
- 28. 立即执行Oracle
- 29. 立即执行DBMS_OUTPUT.PUT_LINE
- 30. 用Phonegap暂停Android应用程序
这些都很好,但有一些问题。 asm指令基本上是断点生成器,如果你希望附加一个调试器,这很好,但也许不是你想要的东西(例如:在windows上它会默认触发一个崩溃/调试对话框)。噢,一个叫做abort()的MSC可以,但是仍然比TerminateProcess()拥有更多的基础设施/残留() – Joe 2012-03-27 23:07:00
@Joe:我不认为以任何方式做这件事都是一个好主意。 CF只使用这个宏来致命错误。就我而言,这个问题的正确答案是“是的,但你不应该”。请注意,我没有写这些,而且它们正在被使用。 – 2012-03-27 23:10:43
这个技巧很好!谢谢! @Joe:断点生成器对我来说是完美的*。 – andyvn22 2012-03-27 23:18:39