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