请教 Swoole\Process::signal
执行前如果有协程产生就不起作用, 这是什么逻辑, 怎么解释?
Swoole version: 4.3.3
代码:
use Swoole\Process;
Swoole\Runtime::enableCoroutine();
echo "kill " . getmypid(), "\n";
go(function() {
sleep(1); // 注释这行, 以下 Process::signal 正常工作
Process::signal(SIGINT, function($signo) {
echo "SIGINT.\n";
\Swoole\Event::exit();
});
Process::signal(SIGTERM, function($signo) {
echo "shutdown.\n";
exit;
});
go(function() {
for($i=1;$i<20;$i++){
echo date('H:i:s'), "\n";
sleep(1);
}
});
});
执行sleep(1)
结果:
root@ubuntu:/# php test.php
kill 16279
14:21:42
14:21:43
14:21:44
^C
root@ubuntu:/#
注释sleep(1)
结果:
root@ubuntu:/# php test.php
kill 16328
14:21:50
14:21:51
14:21:52
^CSIGINT.
root@ubuntu:/#