русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Неканонический ввод


Дата добавления: 2013-12-23; просмотров: 869; Нарушение авторских прав


В обычном (каноническом) режиме символы собираются вместе, пока не будет введена полная строка, завершенная символом NL. Только после этого вызов read(2) возвращает управление, даже если он запрашивал только один символ. Возвращенное вызовом read(2) значение показы­вает количество символов, которые были прочитаны на самом деле до ввода NL.

Однако в некоторых прикладных программах, таких, как обработка экранных форм или полно­экранных редакторах, "строки" ввода не имеют смысла. Например, эти программы могут требо­вать символы по мере их ввода с клавиатуры. Если очистить флаг ICANON в c_iflag, вводимые символы не будут собираться в строки и read(2) будет читать их по мере ввода.

Параметры MIN и TIME определяют условия, при которых будет удовлетворен запрос read(2). MIN определяет минимальное количество символов, которые должны быть получены. TIME представляет собой таймер с квантом времени 0.1 секунды, который сбрасывается при вводе каждого символа. Таким образом, TIME кодирует не общее время ввода строки, а межсимволь­ный интервал. Это сделано для упрощения считывания терминальных кодов расширения, ведь терминалы передают последовательные символы кода быстрее, чем обычный человек может на­жимать клавиши.. Символы EOF и EOL в неканоническом режиме не используются, поэтому эти позиции в массиве c_cc[] используются для MIN и TIME соответственно. Ниже описаны четыре возможных сочетания значений MIN и TIME:

MIN > 0, TIME > 0. В этом случае, TIME служит для измерения времени между вводом одиноч­ных символов и стартует после получения первого символа. Счетчик времени сбрасывается по­сле каждого очередного символа. Если до истечения интервала времени будет получено MIN символов, запрос read(2) удовлетворяется. Если, наоборот, время истекает раньше, чем было считано MIN символов, то все введенные до этого момента символы возвращаются пользовате­лю. Замечание: если TIME истекло, то будет возвращен по крайней мере один символ. Если MIN равен 1, значение TIME не играет роли.



MIN > 0, TIME = 0 Если значение TIME равно нулю, таймер не используется. Имеет значение только MIN. В этом случае запрос read(2) удовлетворяется только тогда, когда получены MIN символов.

MIN = 0, TIME > 0 Если MIN равен нулю, TIME больше не является счетчиком межсимвольного

времени. Теперь таймер активизируется при обработке системного вызова read(2). Запрос read(2) удовлетворяется когда поступил хотя бы один символ или истекло время. Если в течении TIME*0.1 секунд после начала чтения не поступило ни одного символа, запрос возвращает управление с нулевым количеством прочитанных символов.

MIN = 0, TIME = 0 В этом случае, read(2) возвращает управление немедленно. Возвращается ми­нимум из запрошенного и имеющегося на данный момент в буфере количества символов, без ожидания ввода дополнительных символов.

 



<== предыдущая лекция | следующая лекция ==>
Запирание терминала - пример | Клавиатурный тренажер - Пример


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.299 сек.