Книга: Разработка приложений в среде Linux. Второе издание

16.5.4. Флаги режима ввода

16.5.4. Флаги режима ввода

Флаги режима ввода влияют на обработку входных данных, хотя иногда они влияют и на выходные данные. Флаги, устанавливаемые в с_iflag, описаны ниже.

BRKINT и IGNBRK При установке IGNBRK состояние разрыва игнорируется (см. описанную ранее tcsendbreak()). Если IGNBRK не установлен, а BRKINT установлен, состояние разрыва заставляет tty сбросить все очередизованные входные и выходные данные и послать сигнал SIGINT процессам в группе процессов переднего плана для tty. Если IGNBRK и BRKINT не установлены, состояние разрыва читается как нулевой символ (''), кроме случая установки PARMRK, в котором обнаруживается ошибка кадрирования и вместо этого в приложение передаются три байта '377' '' ''.
PARMRK и IGNPAR При установке IGNPAR полученные байты, содержащие ошибки четности или кадрирования, игнорируются (кроме того, что было ранее определено для состояния разрыва). Если IGNPAR не установлен, а PARMRK установлен, полученный байт с ошибкой четности или кадрирования передается приложению как трехбайтовая последовательность '377' '' 'n', где n — это байт в виде, в котором он был получен. В этом случае, если ISTRIP не установлен, допустимый символ '377' передается приложению как последовательность двух символов '377' '377'; при установке ISTRIP старший разряд символа '377' разделяется и передается как '177'. Если не установлены ни PARMRK, ни IGNPAR, полученный байт с ошибкой четности или кадрирования (отличной от состояния разрыва) передается приложению как отдельный символ ''.
INPCK При установке INPCK включается проверка четности. Если она не включается, PARMRK и IGNPAR не влияют на полученные ошибки четности.
ISTRIP При установке ISTRIP старший разряд отсекается из всех полученных байтов, ограничивая их семью битами.
INLCR При установке INLCR полученные символы новой строки ('n') преобразуются в символы возврата каретки ('r').
IGNCR При установке IGNCR полученные символы возврата каретки ('r') игнорируются (не передаются приложению).
ICRNL Если установлен ICRNL, а IGNCR не установлен, полученные символы возврата каретки ('r') сообщаются приложению как символы новой строки ('n').
IUCLC При установке IUCLC и IEXTEN полученные символы верхнего регистра передаются приложению как символы нижнего регистра. Этот флаг в POSIX не определен.
IXOFF При установке IXOFF tty может передать символы Control-S и Control-Q терминалу, чтобы заставить его, соответственно, остановиться и восстановить вывод (то есть передачу данных на компьютер) с целью переполнения входных буферов tty. Это имеет отношение только к последовательным терминалам, поскольку сетевые и локальные терминалы имеют более прямые формы управления потоком. Даже последовательные терминалы часто поддерживают аппаратное управление потоком, контролируемое управляющим флагом (c_cflag) и делающее неуместным программное управление потоком (Control-S и Control-Q).
IXON При установке IXON принятый символ Control-S прекращает передачу входных данных в этот tty, а принятый символ Control-Q перезапускает передачу выходных данных в этот tty. Это соответствует любой форме терминального ввода-вывода, поскольку некоторые пользователи вводят буквенные символы Control-S и Control-Q для приостановки и восстановления вывода.
IXANY При установке IXANY любой принятый символ (не просто Control-Q) перезапускает передачу выходных данных. Этот флаг в POSIX не определен.
IMAXBEL При установке IMAXBEL предупреждающий символ ('а') передается тогда, когда символ принимается, а входной буфер уже полон. Этот флаг в POSIX не определен.

Оглавление книги


Генерация: 1.501. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз