子进程为什么要重装信号处理器?

7csn

[code] // uninstall stop signal handler
pcntl_signal(SIGINT, SIG_IGN, false);
// uninstall graceful stop signal handler
pcntl_signal(SIGTERM, SIG_IGN, false);
// uninstall reload signal handler
pcntl_signal(SIGUSR1, SIG_IGN, false);
// uninstall graceful reload signal handler
pcntl_signal(SIGQUIT, SIG_IGN, false);
// uninstall status signal handler
pcntl_signal(SIGUSR2, SIG_IGN, false);
// reinstall stop signal handler
static::$globalEvent->add(SIGINT, EventInterface::EV_SIGNAL, array('\Workerman\Worker', 'signalHandler'));
// reinstall graceful stop signal handler
static::$globalEvent->add(SIGTERM, EventInterface::EV_SIGNAL, array('\Workerman\Worker', 'signalHandler'));
// reinstall reload signal handler
static::$globalEvent->add(SIGUSR1, EventInterface::EV_SIGNAL, array('\Workerman\Worker', 'signalHandler'));
// reinstall graceful reload signal handler
static::$globalEvent->add(SIGQUIT, EventInterface::EV_SIGNAL, array('\Workerman\Worker', 'signalHandler'));
// reinstall status signal handler
static::$globalEvent->add(SIGUSR2, EventInterface::EV_SIGNAL, array('\Workerman\Worker', 'signalHandler'));
// reinstall connection status signal handler
static::$globalEvent->add(SIGIO, EventInterface::EV_SIGNAL, array('\Workerman\Worker', 'signalHandler'));[/code]1)为什么没有 pcntl_signal(SIGIO, SIG_IGN, false); ?
2)重装信号处理器,似乎还是调用的 array('\Workerman\Worker', 'signalHandler'),为什么要重装?
 

2411 2 0
2个评论

phpcreeper

1、第一个等老大解释吧,个人觉得也应该有这个;
2、第二个是因为主进程和子进程分别对信号的处理方式不同,是为了防止可能的信号冲突而设置;另外确实都调用了同一个信号回调,这点并没有什么问题。

  • 暂无评论
walkor

1、主干已经加上了
2、子进程需要把信号添加到globalEvent才能生效

  • 暂无评论
年代过于久远,无法发表评论

7csn

-14
积分
0
获赞数
0
粉丝数
2019-08-01 加入
×
🔝