为了账号安全,请及时绑定邮箱和手机立即绑定

swoole process子进程fatal,父进程监听不到SIGCHLD信号?

swoole process子进程fatal,父进程监听不到SIGCHLD信号?

PHP
慕妹3146593 2019-03-08 17:12:48
cli模式下用process多进程。master进程通过SIGCHLD监听子进程退出并重启子进程。     swoole_process::signal(SIGCHLD, function(){        // 子进程退出         while ($ret = swoole_process::wait(false)) {            unset(self::$wokers[$ret['pid']]);            self::logError('SIGNAL-WORKER_EXIT-%s', $ret['pid']);            //重新创建             self::initProcess();         }     });直接kill掉子进程,父进程能够接受到信号并重新拉起子进程。但子进程发生fatal的情况下,父进程接收不到子进程退出的信号,同时子进程会成为僵尸进程。[php] <defunct>想问下各位大佬有没有遇到这种情况的?pcntl实现的时候,子进程fatal的时候,父进程是会受到SIGCHLD的。
查看完整描述

1 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

这种情况的主要原因可能是你的父进程逻辑存在问题,swoole_process::signal是异步信号处理,你的程序要是完全异步非阻塞的。如果你父进程代码是while(true)死循环、同步阻塞的,这里没有机会执行到。

查看完整回答
反对 回复 2019-03-28
  • 1 回答
  • 0 关注
  • 406 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信