static void swFactoryProcess_worker_signal_init(void) { #ifdef HAVE_SIGNALFD swSignalfd_add(SIGHUP, NULL); swSignalfd_add(SIGPIPE, NULL); swSignalfd_add(SIGUSR1, NULL); swSignalfd_add(SIGUSR2, NULL); swSignalfd_add(SIGTERM, swFactoryProcess_worker_signal_handler); swSignalfd_add(SIGALRM, swTimer_signal_handler); //for test swSignalfd_add(SIGVTALRM, swFactoryProcess_worker_signal_handler); #else swSignal_set(SIGHUP, SIG_IGN, 1, 0); swSignal_set(SIGPIPE, SIG_IGN, 1, 0); swSignal_set(SIGUSR1, SIG_IGN, 1, 0); swSignal_set(SIGUSR2, SIG_IGN, 1, 0); swSignal_set(SIGTERM, SIG_IGN, 1, 0); if (SwooleG.serv->daemonize) { swSignal_set(SIGINT, SIG_IGN, 1, 0); } swSignal_set(SIGVTALRM, swFactoryProcess_worker_signal_handler, 1, 0); swSignal_set(SIGTERM, swFactoryProcess_worker_signal_handler, 1, 0); swSignal_set(SIGALRM, swTimer_signal_handler, 1, 0); #endif }
void swSignal_add(int signo, swSignalFunc func) { #ifdef HAVE_SIGNALFD if (SwooleG.use_signalfd) { swSignalfd_add(signo, func); } else #endif { swSignal_set(signo, func, 1, 0); } }
void swSignal_add(int signo, swSignalFunc func) { #ifdef HAVE_SIGNALFD if (SwooleG.use_signalfd) { swSignalfd_add(signo, func); } else #endif { signals[signo].callback = func; signals[signo].active = 1; signals[signo].signo = signo; swSignal_set(signo, swSignal_async_handler, 1, 0); } }