我有一个Mac OS X应用程序(Cocoa),它产生了一个C ++控制台助手应用程序来完成一些工作。 GUI通过NSTask生成帮助程序,并通过命名管道相互通信。这一切都很好。
如果帮助应用程序死亡,GUI将获得NSTaskDidTerminateNotification,并可以调用terminationReason来确定帮助程序是否正常退出或被杀死(NSTaskTerminationReasonUncaughtSignal)。但是,有没有办法确切地确定哪些信号未被捕获?我想知道它是SIGBUS还是SIGABRT。
这可能吗? NSTask似乎没有这个功能,但也许有一些UNIX-y voodoo?
更新 Terminal.app肯定知道。例如:
$ cat >crash.c
int main( void ) {
int *crashy = 0;
*crashy = 0xdeadbeef;
return 0;
}
^C
$ clang crash.c
$ ./a.out
Segmentation fault
答案 0 :(得分:1)
只需输入退出代码
NSTask* task = ...
[task waitUntilExit];
task.terminationStatus是您所需要的,它是https://www.tutorialspoint.com/unix/unix-signals-traps.htm信号之一的代码