0

root として実行する Mac OS X Carbon Daemon があります。正しく終了するには、SIGTERM (およびその他のシグナル) を受信して​​処理する必要があります。コードは次のようになります。

static void sig_hup(int sig)
{
   fprintf(stderr, "Caught signal %d.\n" sig); fflush(stderr);
}

int main(int argc, const char * argv[]) {
   ...

   signal(SIGTERM, sig_hup);

   ...

   CFRunLoopRun();       // run the event loop

   ...
   return 0;
}

問題は、sig_hup() が呼び出されないことです。

おそらくシグナルは CFRunLoopRun() によってキャッチされますか? もしそうなら、デーモンは何か (sudo launchctl unload など) がそれを終了しようとしていることをどのように通知されますか?

4

0 に答える 0