如何解决确定终止的子进程未捕获哪个信号
| 我有一个Mac OS X应用程序(Cocoa),它产生了一个C ++控制台帮助程序应用程序来做一些工作。 GUI通过NSTask生成帮助程序,它们通过命名管道相互通信。一切都很好。 如果助手应用程序死了,则GUI会获取NSTaskDidTerminateNotification,并可以调用终止原因来确定助手程序是正常退出还是被杀死(NSTaskTerminationReasonUncaughtSignal)。但是,是否有任何方法可以准确确定未捕获到的信号?我想知道是SIGBUS还是SIGABRT。 这可能吗? NSTask似乎没有此功能,但是也许有一些UNIX-y伏都教? 更新: Terminal.app当然知道。例如:$ cat >crash.c
int main( void ) {
int *crashy = 0;
*crashy = 0xdeadbeef;
return 0;
}
^C
$ clang crash.c
$ ./a.out
Segmentation fault
解决方法
只需要退出代码
NSTask* task = ...
[task waitUntilExit];
task.terminationStatus是您所需要的,它是https://www.tutorialspoint.com/unix/unix-signals-traps.htm信号之一的代码
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。