[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Режимы ввода - c_iflag

Флаги в c_iflag задают режим ввода с терминала:
Если установлен IGNBRK, условие разрыва линии (break condition)
игнорируется, то есть не помещается в очередь ввода и, таким образом,
не читается никаким процессом. Если IGNBRK не установлен, а BRKINT
установлен, это условие приведет к сбросу содержимого очередей ввода и
вывода. Если терминал является управляющим терминалом какой-либо
основной группы, то в этом случае все процессы из этой группы получат
сигнал SIGINT. Если ни IGNBRK, ни BRKINT не установлены, разрыв линии
интерпретируется как одиночный символ ASCII NULL ('\0').
Если установлен IGNPAR, то символы ошибки четности и разрыва линии
(отличные от разрыва линии) игнорируются.
Если установлен PARMRK, и не установлен IGNPAR, байт с ошибками
четности или границ символа (отличными от разрыва линии) читается как
трехсимвольная последовательность: 0377, 0, X, где X - это данные,
полученные в ошибочном байте. Чтобы избежать неоднозначностей, если
ISTRIP не установлен, правильно принятый символ 0377 читается как
0377, 0377. Если не установлены ни IGNPAR, ни PARMRK, то символ с
ошибками четности или границ символа (отличный от разрыва линии)
читается как ASCII NULL.
Если установлен INPCK, разрешен контроль четности на вводе. Если INPCK
не установлен, контроль четности на вводе запрещен. Это позволяет
генерировать четность на выходе без ошибок четности при вводе.
Если установлен ISTRLIP, то вводимые символы обрезаются до 7 бит,
иначе обрабатываются все 8 бит.
Если установлен INLCR, получаемый символ NL переводится в CR. Если
установлен IGNCR, получаемые символы CR игнорируются (не читаются).
Иначе, если установлен ICRNL, получаемые символы CR переводятся в
символы NL.
Если установлен IUCLC, получаемые буквы верхнего регистра переводятся
в соответствующие буквы нижнего регистра.
Если установлен IXON, разрешено старт/стоповое управление выводом.
Полученный СТОП-символ приостановит вывод, а СТАРТ-символ возобновит
его. Все "лишние" СТАРТ/СТОП-символы игнорируются и не читаются. Если
установлен IXANY, то любой полученный символ будет возобновлять
задержанный вывод.
Если установлен IXOFF, система будет передавать СТАРТ/СТОП-символы,
когда очередь ввода становится почти пустой/полной.
Если установлен IMAXBEL, то при заполнении очереди ввода будет
выдаваться символ ASCII BEL. Дальнейший ввод не сохраняется, но
данные, уже находящиеся в буфере, не изменяются. Если IMAXBEL не
установлен, при переполнении очереди символ BEL не выдается, и все
данные в очереди сбрасываются.
Начальное состояние режима ввода: BRKINT, ICRNL, IXON, ISTRIP.
                        РЕЖИМЫ ВВОДА - c_iflag


       Флаг                        Значение

      IGNBRK        Игнорировать разрыв линии
      BRKINT        Посылать сигнал прерывания при разрыве линии
      IGNPAR        Игнорировать символы с ошибками четности
      PARMRK        Отмечать ошибки четности
      INPCK         Разрешить контроль четности при вводе
      ISTRIP        Срезать старший (восьмой) бит у символов
      INLCR         Преобразовывать при вводе NL в CR
      IGNCR         Игнорировать CR
      ICRNL         Преобразовывать при вводе CR в NL
      IUCLC         Преобразовывать при вводе буквы верхнего регистра
                    в нижний.
      IXON          Разрешить старт/стоповое управление выводом
      IXANY         Разрешить возобновление вывода любым символом
      IXOFF         Разрешить старт/стоповое управление вводом
      IMAXBEL       Выдавать BEL, если строка ввода слишком длинна