При нажатии Ctrl+С чтобы завершить скрипт PHP, я должен восстановить TTY перед возвращением в оболочку, в противном случае настройки TTY из скрипта остаются в терминале, что делает его непригодным для использования.
В настоящее время я должен нажать Ctrl+С с последующим Войти чтобы обработчик сигнала включился. Как я могу изменить скрипт, чтобы восстановить TTY и выйти из скрипта, просто нажав Ctrl+С в одиночестве?
<?php
function sig_handler($signo) {
exec("stty icanon echo");
exit("BYE\n");
}
declare(ticks=1);
pcntl_signal(SIGINT, "sig_handler");
pcntl_signal(SIGTERM, "sig_handler");
pcntl_signal(SIGHUP, "sig_handler");
exec("stty -icanon -echo");
while(TRUE)
echo fread(STDIN, 10);
?>
Задача ещё не решена.
Других решений пока нет …