Я думаю (хотя и не уверен), что вы говорите о Windows, а не Unix?
Если это так, возможно, что процесс командной строки на самом деле не ожидает нажатия клавиши (или ввода) на stdin
, а вместо этого выполняет эквивалент старой функции DOS kbhit()
.
AFAIK Нет способа заставить эту функцию поверить, что клавиатура была нажата без фактического нажатия клавиши.
Чтобы проверить эту теорию, создайте текстовый файл «input.txt» с несколькими пустыми строками и запустите:
foo.exe < input.txt
Это покажет, ожидает ли ваша программа stdin
или что-то еще.