示例#1
0
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
}
示例#2
0
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);
	}
}
示例#3
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);
    }
}