【问题标题】:Determine which signal uncaught by terminated child process确定终止的子进程未捕获的信号
【发布时间】:2011-06-01 05:52:42
【问题描述】:

我有一个 Mac OS X 应用程序 (Cocoa),它会生成一个 C++ 控制台助手应用程序来完成一些工作。 GUI 通过 NSTask 生成助手,它们通过命名管道相互通信。这一切都很好。

如果助手应用程序死了,GUI 会收到一个 NSTaskDidTerminateNotification,并可以调用终止原因来确定助手是正常退出还是被杀死 (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

【问题讨论】:

    标签: cocoa macos ipc signals nstask


    【解决方案1】:

    只需输入退出代码

    NSTask* task = ...
    [task waitUntilExit];
    

    task.terminationStatus 是你需要的,它是https://www.tutorialspoint.com/unix/unix-signals-traps.htm的信号一的代码

    【讨论】:

      猜你喜欢
      • 2015-01-20
      • 2016-06-02
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-18
      • 2017-08-14
      • 1970-01-01
      相关资源
      最近更新 更多