检测我的Mac应用程序是否崩溃,然后继续正常崩溃
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了检测我的Mac应用程序是否崩溃,然后继续正常崩溃相关的知识,希望对你有一定的参考价值。
[通常,当Mac应用收到崩溃信号,例如SIGSEGV
或SIGILL
时,该过程将停止,几秒钟后,操作系统会以某种方式创建崩溃报告文件并告知用户。但是,如果我使用sigaction
处理程序拦截信号,则不会发生这种正常行为。我想做的是检测崩溃发生的时间,使用在信号处理程序中可以安全调用的少数函数做一些工作,然后以正常方式继续崩溃。有没有办法做到这一点?我尝试在信号处理程序中重新引发信号,但这没有做正确的事情。
答案
通过像这样结束信号处理程序,通过默认处理重新发送信号,我几乎可以得到我想要的行为:
signal( inSignal, SIG_DFL );
pthread_kill( pthread_self(), inSignal );
usleep( 10000 ); /* give time for signal to happen */
通过Apple's source code查看abort()
可以帮助我弄清楚这一点。
以上是关于检测我的Mac应用程序是否崩溃,然后继续正常崩溃的主要内容,如果未能解决你的问题,请参考以下文章
用于Mac / Linux崩溃的Windows getch()相当于