русс | укр

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

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

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

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


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

Управляющие символы


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


Структура termios

 

Структура termios используется для представления характеристик терминального устройства. Структура одна и та же для всех терминальных устройств, независимо от изготовителя аппарату­ры. Это предоставляет единообразный способ изменения характеристик и поведения терминаль­ного устройства. В частности, эта структура используется модулем STREAMS для изменения поведения аппаратного и программного интерфейса ввода/вывода.

Ниже перечислены поля структуры termios:

c_iflag флаги, управляющие предобработкой ввода с терминала.

c_oflag флаги, управляющие системной постобработкой вывода на терминал.

c_cflag флаги, описывающие аппаратные характеристики терминального интерфейса.

c_lflag флаги, управляющие разбиением потока на строки.

c_cc[] массив специальных управляющих символов.

Эти поля будут подробнее обсуждаться далее в этом разделе.

Ссылка: /usr/include/sys/termios.h

 

 

Управляющие символы, определенные в массиве c_cc[] имеют специальное значение и могут быть изменены вызовом tcsetattr(). На следующей странице в колонке индекс приведены сим­вольные константы, определенные в <termios.h>. Эти символьные константы могут быть исполь­зованы как индексы в массиве c_cc[]. Значения по умолчанию для соответствующих элементов перечислены в колонке c_cc[индекс]. Некоторые из этих управляющих символов описаны ниже.

Следует иметь в виду, что в кодировке ASCII, первые 32 символа зарезервированы для выполне­ния различных управляющих функций (см. ascii(5)). Видеотерминалы и терминальные эмулято­ры генерируют такие символы при одновременном нажании комбинации алфавитных (или неко­торых неалфавитных) клавиш и клавиши Ctrl. Нажатие клавиши Ctrl приводит к срезанию стар­ших бит кода соответствующего символа. Исключение составляет комбинация Ctrl-?, которая выдает код '\0x1F' (ASCII DEL). Так, комбинация клавиш Ctrl-D — это символ '\0x3' (ASCII EOT).



VINTR (Ctrl-C или ASCII DEL) генерирует сигнал SIGINT, который посылается всем про­цессам в группе первого плана, связанной с этим терминалом. По умолчанию процесс при получении этого сигнала будет завершен, но он может проигнорировать этот сигнал или пере­хватить его при помощи функции обработки.

VQUIT (CTRL-\) генерирует сигнал SIGQUIT. Этот сигнал обрабатывается так же, как и SIGINT.

VERASE (Сtrl-H, Ctrl-? или #) стирает предыдущий символ. Он не может стереть символ перед началом строки, ограниченной символами NL, EOF, EOL или EOL2.

VWERASE (CTRL-W) очищает предыдущее "слово". Он не может стереть слово из преды­дущей строки, ограниченной символами NL, EOF, EOL или EOL2. Это функция расширения, поэтому для ее использования необходимо установить флаг IEXTEN.

VKILL (Ctrl-U) стирает всю строку, ограниченную символами NL, EOF, EOL или EOL2.

VEOF (CTRL-D) может использоваться для обозначения конца файла при вводе с термина­ла. Когда получен этот cимвол, все символы, ожидающие считывания, будут немедленно пере­даны программе, без ожидания символа новой строки, и остаток строки игнорируется. Таким образом, если в очереди не было символов, то есть EOF был послан в начале строки, read по­лучит ноль символов, что является стандартным обозначением конца файла.

(Продолжение на следующей странице)

 

VSTOP (CTRL-S) может использоваться для временной приостановки вывода. Это полезно на экранных терминалах, чтобы вывод не исчезал с экрана, пока пользователь его не прочитал. Если вывод уже приостановлен, вводимые СТОП-символы игнорируются и не бу­дут прочитаны.

VSTART (CTRL-Q) используется для возобновления вывода, остановленного СТОП-­символом. Если ввод не был приостановлен, символы VSTART игнорируются и не читаются.

VSUSP (CTRL-Z) генерирует сигнал SIGTSTP, который приостанавливает все процессы в группе процессов первого плана этого терминала. Например, этот символ используется для функций управления заданиями в shell.

VDISCARD (CTRL-O) приводит к тому, что весь вывод будет игнорироваться, пока не будет послан еще один символ DISCARD, программа не выведет новые символы или не сбросит соответствующее условие. Это функция расширения, и исполняется, только если установлен флаг IEXTEN.

VLNEXT (CTRL-V) игнорирует специальное значение следующего символа. Это работает для всех специальных символов из массива c_cc[]. Это позволяет вводить символы, которые в ином случае были бы проинтерпретированы системой (такие, как KILL, QUIT). Символы VERASE, VKILL и VEOF могут также быть введены после символа обратной ко­сой черты (backslash, \). В этом случае они также не вызовут исполнения специальной функ­ции.

VREPRINT (CTRL-R или ASCII DC2) печатает символ новой строки и все символы, которые ожидали в очереди ввода (как если бы это была новая строка). Это считается функцией расширения, поэтому работает, только если установлен IEXTEN.

Для изменения управляющего символа, необходимо получить текущие терминальные атрибуты вызовом tcgetattr(3C), присвоить требуемому элементу массива c_cc[] новое значение и изменить атрибуты терминала вызовом tcsetattr(3C). Если значение управляющего символа будет _POSIX_VDISABLE, то функция, ассоциированная с этим символом, будет выключена.

 



<== предыдущая лекция | следующая лекция ==>
Получение и установка атрибутов терминала | Некоторые флаги режимов


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


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

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

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


 


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

 
 

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

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