Предоставление символа EOF из командной строки

Кажется, что такой инструмент уже существует для GNU/Linux. Это назвало Ardesia. Читайте об этом здесь

Пример (взятый из вышеупомянутой ссылки):

enter image description here

Кроме того, отметьте это ardesia кажется, превратил его путь в repos (это находится в Debian стабильный repos, по крайней мере).

3
20.10.2015, 11:21
2 ответа

Принятие tty "приготовленный" режим, ctrl - D работает путем завершения входной обработки строки и отправки данных, уже введенных приложением. Таким образом, при вводе "abc", сопровождаемой ctrl - D, те три байта будут отосланы к приложению.

Теперь, как приложение обычно определяет конец файла? EOF принят, когда чтение возвращает 0 байтов. Таким образом, необходимо заставить чтение возвращать 0 байтов. Если вы, в которых первый хит входит и затем ctrl - D, сначала что-либо, которое вы ввели, отправляетесь в приложение вместе с символом новой строки. Затем ctrl - D вызывает любые данные, в которые вы вошли (т.е. ничто!), чтобы быть отправленным в приложение, которое читает 0 байтов и предполагает EOF.

, Если вы входите, что-либо после эти входит прежде, чем совершить нападки ctrl - D затем, приложение получает те нажатия клавиш и ожидает больше. Таким образом для генерации EOF без первого удара входят , совершают нападки ctrl - D дважды подряд.

Так для ответа на вопрос:Вы сначала ввели какие-либо символы (кроме новой строки), прежде чем нажать ctrl - D ? Если да, попробуйте это дважды подряд.

Это можно проверить, например:

$ wc -l
test123     0     1     7

(нажмите ctrl - D дважды после test123 .)

Утилита wc показывает количество прочитанных строк, слов и символов. Строки 0, так как вы не ввели новую строку, а test123 - это одно слово и 7 символов.

2
27.01.2020, 21:22

Нет "символа EOF", ctrl-D переводится драйвером терминала в условие конца файла , передается тому, кто пытается читать после этого (без него read (2) или другой вызов, ожидающий ввода, будет просто вечно ждать нового ввода). Это зависит от режима, в котором находится tty, предыдущее обсуждение относится к приготовленному режиму (драйвер собирает строки, позволяя ограниченную форму редактирования строк, полные строки отправляются читателю). Готовый режим - это режим по умолчанию, используемый почти каждой программой, читающей с клавиатуры. В необработанном режиме (например, vi (1) или других редакторах, настроенных для получения полного контроля) программа получает каждый символ в точности так, как он введен.

1
27.01.2020, 21:22

Теги

Похожие вопросы