[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Терминальный ввод/вывод

Эта диаграмма более подробно изображает символьные очереди ввода и
вывода. Существуют две очереди ввода и одна - вывода. Обычно символы,
вводимые с клавиатуры терминала, помещаются в "сырую" очередь ввода.
Кроме того, если требуется эхо (вывод печатаемых символов на экран),
копии этих символов добавляются в очередь вывода.
Если разрешен канонический режим обработки ввода (обычно это делается
по умолчанию), символы из "сырой" очереди подвергаются предобработке
при копировании в каноническую очередь ввода. Копирование происходит
по строкам, когда поступает символ перевода строки (NL). Ваша
прикладная программа читает строки ввода из канонической очереди.
Кроме того, предобработка ввода включает обработку символов забоя и
стирания строки. Символ забоя ERASE (# по умолчанию) удаляется вместе
с символом, введенным перед ним. Символ стирания строки KILL (@ по
умолчанию) приводит к стиранию всей текущей строки.
Например, предполагая, что символ забоя равен #, вы набираете на
клавиатуре:
datx#e
Символы, набранные на клавиатуре, записываются в "сырую" очередь по
мере ввода. Затем при копировании из "сырой" очереди в каноническую,
символы просматриваются. При этом символы # и стоящий перед ним
выбрасываются. Поэтому, программа, читающая с терминала, получит
строку:
date
При выводе, символы, генерируемые вашей прикладной программой,
накапливаются в выходной очереди. При этом может происходить требуемая
постобработка.