Кажется, это очень простая задача, но мне очень трудно определить конец ввода, переданный через stdin в PHP [5.5.x]. Вместо того, чтобы передавать символ 0x04
EOT для закрытия финальной строки, fgets(STDIN)
, похоже, решил прекратить ждать ввода без заметного сигнала. Наиболее очевидная демонстрация через код:Обнаружение EOT из stdin в PHP
<?php
while(substr(rtrim(fgets(STDIN), PHP_EOL), -1) != 0x04) {
echo "Input received.";
}
После Ctrl + D, петля затягивает сразу и неоднократного «Input получил.» разливает в stdout вместо обнаружения EOT или ждет дальнейшего ввода. Почему это?