--TEST-- swoole_process: signal --SKIPIF-- <?php require __DIR__ . '/../include/skipif.inc'; ?> --INI-- assert.active=1 assert.warning=1 assert.bail=0 assert.quiet_eval=0 --FILE-- <?php require_once __DIR__ . '/../include/bootstrap.php'; //父进程中先设置信号 swoole_process::signal(SIGCHLD, function () { swoole_process::signal(SIGCHLD, null); swoole_process::signal(SIGTERM, null); echo "PARENT WAIT\n"; swoole_event_exit(); }); //测试被子进程覆盖信号 swoole_process::signal(SIGTERM, function () { //释放信号,否则底层会报内存泄漏 swoole_process::signal(SIGTERM, null); echo "PARENT SIGTERM\n"; swoole_event_exit(); }); $pid = (new \swoole_process(function () { swoole_process::signal(SIGTERM, function ($sig) { echo "CHILD SIGTERM\n"; swoole_process::signal(SIGTERM, function ($sig) { echo "CHILD EXIT\n"; swoole_event_exit(); }); }); }))->start(); swoole_timer_after(500, function() use ($pid) { swoole_process::kill($pid, SIGTERM); swoole_timer_after(500, function() use ($pid) { swoole_process::kill($pid, SIGTERM); }); }); swoole_event_wait(); ?> --EXPECT-- CHILD SIGTERM CHILD EXIT PARENT WAIT