В Windows комбинация клавиш Ctrl-Z вступит в силу только в том случае, если она нажата в начале строки.В противном случае ОС игнорирует это.Вы должны нажать «ввод» или «возврат», чтобы сначала вставить символ новой строки.
В Unix, комбинация клавиш Ctrl-D немедленно сбросит stdin
(как указано в комментариях ниже), но не вызоветgetchar()
для возврата EOF
, если вы не находитесь на новой пустой строке;так же, как в Windows.
Из комментариев (ниже):
В Unix нет "символа EOF".EOF - это просто чтение нулевой длины.Это происходит в конце обычных файлов и может быть вызвано на терминале нажатием управляющего символа, который был установлен в настройках терминала для EOF (обычно ^ D).Причина, по которой ^ D «не работает», когда буфер терминала не пуст, состоит в том, что он фактически не вставляет что-либо в поток;это просто приводит к возвращению ожидающего чтения, но поскольку длина ввода не равна нулю, приложение не рассматривает его как «EOF».
Это указывает на хорошую точку - на самом деле нет файла содержит EOF
- и нажатие Ctrl-D не «вставит» (как я уже говорил ранее) что-либо в поток stdin
.Это просто мигает stdin
.EOF
- это стандартный макрос, представляющий уведомление о том, что конец файла достигнут стандартной функцией.
Благодаря @R.для объяснения о EOF
.