私はMacOSXアプリ(Cocoa)を持っています。これは、C++コンソールヘルパーアプリを生成していくつかの作業を行います。GUIはNSTaskを介してヘルパーを生成し、名前付きパイプを介して相互に通信します。これはすべて良いです。
ヘルパーアプリが停止すると、GUIはNSTaskDidTerminateNotificationを取得し、terminationReasonを呼び出して、ヘルパーが正常に終了したか、強制終了されたかを判断できます(NSTaskTerminationReasonUncaughtSignal)。しかし、どの信号が捕捉されなかったかを正確に判断する方法はありますか?たとえば、SIGBUSなのかSIGABRTなのか知りたいのですが。
これは可能ですか?NSTaskにはこの機能がないようですが、UNIXのようなブードゥーがありますか?
更新: Terminal.appは確かに知っています。例えば:
$ cat >crash.c
int main( void ) {
int *crashy = 0;
*crashy = 0xdeadbeef;
return 0;
}
^C
$ clang crash.c
$ ./a.out
Segmentation fault