Mac OS守护程序未收到SIGTERM

时间:2016-06-08 13:36:20

标签: macos daemon sigterm

我有一台以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 ...)正试图终止它?

0 个答案:

没有答案