Есть демон на php. В цикле действия и проверка, что получен сигнал. Если получен - выход из цикла. И завершение.
#!/usr/bin/env php
<?php
declare(strict_types=1);
declare(ticks=1);
$pid = pcntl_fork();
if ($pid) {
echo 'Bot started.' . PHP_EOL;
exit(0);
}
posix_setsid();
pcntl_signal(SIGTERM, function () {
global $STOP;
$STOP = true;
});
while (!$STOP) {
//...
sleep(1);
}
echo 'Bot stopped.' . PHP_EOL;
exit(0);
Проблема в том, что когда я завершаю демона командой kill pid, то он завершается, в консоль выводится "Bot stopped." и перевод строки и всё, консоль как бы зависает, будто бы ждёт ещё ответов от демона. Пока не нажму enter.
Как исправить? Чего ждёт консоль?