有沒有辦法停止執行,有點像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