Provided by: manpages-ru-dev_4.18.1-1_all bug

ИМЯ

       termios,   tcgetattr,   tcsetattr,   tcsendbreak,  tcdrain,  tcflush,  tcflow,  cfmakeraw,
       cfgetospeed, cfgetispeed, cfsetispeed,  cfsetospeed,  cfsetspeed  -  возвращает  и  задаёт
       атрибуты терминала, управляет линией, возвращает и задаёт скорость передачи

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <termios.h>
       #include <unistd.h>

       int tcgetattr(int fd, struct termios *termios_p);
       int tcsetattr(int fd, int optional_actions,
                     const struct termios *termios_p);

       int tcsendbreak(int fd, int duration);
       int tcdrain(int fd);
       int tcflush(int fd, int queue_selector);
       int tcflow(int fd, int action);

       void cfmakeraw(struct termios *termios_p);

       speed_t cfgetispeed(const struct termios *termios_p);
       speed_t cfgetospeed(const struct termios *termios_p);

       int cfsetispeed(struct termios *termios_p, speed_t speed);
       int cfsetospeed(struct termios *termios_p, speed_t speed);
       int cfsetspeed(struct termios *termios_p, speed_t speed);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       cfsetspeed(), cfmakeraw():
           Начиная с glibc 2.19:
               _DEFAULT_SOURCE
           В версии glibc 2.19 и более ранних:
               _BSD_SOURCE

ОПИСАНИЕ

       Функции  termios  описывают  общий  интерфейс  терминала, который предоставляет управление
       асинхронными портами связи.

   Структура termios
       Множество описанных здесь функций имеют аргумент termios_p, который является указателем на
       структуру termios. В этой структуре есть, по крайней мере, следующие поля:

           tcflag_t c_iflag;      /* режимы ввода */
           tcflag_t c_oflag;      /* режимы вывода */
           tcflag_t c_cflag;      /* режимы управления */
           tcflag_t c_lflag;      /* локальные режимы */
           cc_t     c_cc[NCCS];   /* специальные символы */

       Значения  этих  полей  описаны  далее.  Для первых четырёх полей битовых масок определения
       некоторых флагов доступны только, если определён специальный макрос  тестирования  свойств
       (смотрите feature_test_macros(7)), как указано в квадратных скобках («[]»).

       В  описаниях ниже приписка «нет в POSIX» означает, что значение не описано в POSIX.1-2001,
       а «XSI» — что значение описано в POSIX.1-2001 как часть расширения XSI.

       Константы флага c_iflag:

       IGNBRK Игнорировать состояние BREAK в вводе.

       BRKINT If IGNBRK is set, a BREAK is ignored.  If it is not set but BRKINT is set,  then  a
              BREAK  causes the input and output queues to be flushed, and if the terminal is the
              controlling terminal of a foreground process group, it will cause a  SIGINT  to  be
              sent  to  this foreground process group.  When neither IGNBRK nor BRKINT are set, a
              BREAK reads as a null byte ('\0'), except when PARMRK is  set,  in  which  case  it
              reads as the sequence \377 \0 \0.

       IGNPAR Игнорировать ошибки кадра и чётности.

       PARMRK Если  этот  бит  установлен,  то  входящие  байты  с  ошибками  чётности  или кадра
              помечаются при передаче в программу. Этот бит значим, только когда  установлен  бит
              INPCK  и  не установлен бит IGNPAR. Байты с ошибками помечаются двумя предваряющими
              их байтами \377 и \0. То есть программа,  на  самом  деле,  читает  три  байта  при
              получении  одного байта с ошибками с терминала. Если корректный байт имеет значение
              \377 и бит ISTRIP (смотрите далее)  не  установлен,  то  программа  может  ошибочно
              посчитать его как помечающий ошибки чётности. Поэтому в этом случае корректный байт
              \377 передаётся программе как два байта, \377 \377.

              Если IGNPAR или  PARMRK  не  указаны,  то  символ  с  ошибкой  чётности  или  кадра
              считывается как \0.

       INPCK  Включить проверку чётности ввода.

       ISTRIP Удалять восьмой бит.

       INLCR  Преобразовывать NL в CR в вводе.

       IGNCR  Игнорировать возврат каретки в вводе.

       ICRNL  Преобразовывать  возврат  каретки  в  символ  новой  строки в вводе (если не указан
              IGNCR).

       IUCLC  (нет в POSIX) Переводить заглавные буквы в прописные в вводе.

       IXON   Включить управление потоком XON/XOFF в выводе.

       IXANY  (XSI) Набор любого символа  запускает  остановленный  вывод  (по  умолчанию  только
              символ START заново запускает вывод).

       IXOFF  Включить управление потоком XON/XOFF в вводе.

       IMAXBEL
              (нет  в POSIX) Выдавать звуковой сигнал, когда очередь ввода переполняется. В Linux
              не реализован этот бит и его действие выполняется всегда.

       IUTF8 (начиная с Linux 2.6.4)
              (нет в POSIX)  Ввод  в  UTF8;  это  позволяет  символу  стирания  (character-erase)
              правильно работать в режиме предварительной обработки (cooked mode).

       Константы флага c_oflag:

       OPOST  Включить обработку вывода, определяемую реализацией.

       OLCUC  (нет в POSIX) Переводить прописные буквы в заглавные в выводе.

       ONLCR  (XSI) Преобразовывать NL в CR-NL в выводе.

       OCRNL  Преобразовывать CR в NL в выводе.

       ONOCR  Не выводить CR в столбец 0.

       ONLRET The  NL  character is assumed to do the carriage-return function; the kernel's idea
              of the current column is set to 0 after both NL and CR.

       OFILL  Посылать символы заполнения для задержки, а не использовать временную задержку.

       OFDEL  Fill character is ASCII DEL (0177).  If unset, fill character is ASCII NUL  ('\0').
              (Not implemented on Linux.)

       NLDLY  Маска   задержки   новой  строки.  Значениями  могут  быть  NL0  и  NL1  [требуется
              _BSD_SOURCE, _SVID_SOURCE или _XOPEN_SOURCE].

       CRDLY  Маска задержки перевода каретки. Значениями  могут  быть  CR0,  CR1,  CR2  или  CR3
              [требуется _BSD_SOURCE, _SVID_SOURCE или _XOPEN_SOURCE].

       TABDLY Маска  задержки  горизонтальной  табуляции. Значениями могут быть TAB0, TAB1, TAB2,
              TAB3 (или  XTABS,  но  смотрите  раздел  BUGS).  Значение  TAB3,  то  есть,  XTABS,
              раскрывает табуляцию в пробелы (один символ табуляции — восемь столбцов) [требуется
              _BSD_SOURCE, _SVID_SOURCE или _XOPEN_SOURCE].

       BSDLY  Маска задержки символа забоя. Значениями могут быть BS0 или BS1  (никогда  не  была
              реализована) [требуется _BSD_SOURCE, _SVID_SOURCE или _XOPEN_SOURCE].

       VTDLY  Маска задержки вертикальной табуляции. Значениями могут быть VT0 или VT1.

       FFDLY  Маска  задержки  прокрутки  страницы.  Значениями могут быть FF0 или FF1 [требуется
              _BSD_SOURCE, _SVID_SOURCE или _XOPEN_SOURCE].

       Константы флага c_cflag:

       CBAUD  (нет в POSIX)  Маска  скорости  в  бодах  (4+1  бита)  [требуется  _BSD_SOURCE  или
              _SVID_SOURCE].

       CBAUDEX
              (нет  в  POSIX)  Дополнительная  маска  скорости  в бодах (1 бит), включена в CBAUD
              [требуется _BSD_SOURCE или _SVID_SOURCE].

              В стандарте POSIX указано, что скорость в бодах хранится в  структуре  termios  без
              указания  её точного местонахождения, и для работы к ней используются cfgetispeed()
              и cgfsetispeed(). В  некоторых  системах  используются  биты,  выбираемые  CBAUD  в
              c_cflag, в других используются отдельные поля, например sg_ispeed и sg_ospeed.

       CSIZE  Маска размера символа. Значениями могут быть CS5, CS6, CS7 или CS8.

       CSTOPB Использовать два стоповых бита вместо одного.

       CREAD  Включить приёмник.

       PARENB Запустить генерацию чётности при выводе и проверку чётности на вводе.

       PARODD Если  указано,  то  при  вводе  и  выводе  используется  отрицательная  чётность, в
              противном случае используется положительная чётность.

       HUPCL  Выключить управляющие линии модема после  того,  как  последний  процесс  прекратит
              использование устройства (повесит трубку).

       CLOCAL Игнорировать управляющие линии модема.

       LOBLK  (нет в POSIX) Блокировать вывод из не текущего уровня оболочки (для использования в
              shl (shell layers), не реализовано в Linux).

       CIBAUD (not in POSIX) Mask for input speeds.  The values for the CIBAUD bits are the  same
              as the values for the CBAUD bits, shifted left IBSHIFT bits.  [requires _BSD_SOURCE
              or _SVID_SOURCE] (Not implemented in glibc,  supported  on  Linux  via  TCGET*  and
              TCSET* ioctls; see ioctl_tty(2))

       CMSPAR (нет в POSIX) Использовать «липкую» (есть/нет) чётность (поддерживается в некоторых
              последовательных устройствах): если задан PARODD, то бит чётности  всегда  1;  если
              PARODD не задан, то бит чётности всегда 0 [требуется _BSD_SOURCE или _SVID_SOURCE].

       CRTSCTS
              (нет  в  POSIX) Разрешить (аппаратное) управление потоком данных RTS/CTS [требуется
              _BSD_SOURCE или _SVID_SOURCE].

       Константы флага c_lflag:

       ISIG   При получении символов INTR, QUIT,  SUSP  или  DSUSP  генерировать  соответствующий
              сигнал.

       ICANON Включить канонический режим (описан далее).

       XCASE  (нет  в  POSIX;  не  поддерживается  в Linux) Если также указан ICANON, то терминал
              работает только с символами  в  верхнем  регистре.  Ввод  преобразуется  в  символы
              нижнего регистра, кроме символов, предваряемых \. При выводе предваряемые \ символы
              в верхнем регистре и символы в нижнем регистре  преобразуются  в  символы  верхнего
              регистра [requires _BSD_SOURCE, _SVID_SOURCE или _XOPEN_SOURCE].

       ECHO   Отображать вводимые символы.

       ECHOE  Если  также  указан  ICANON, то символ ERASE стирает предыдущий введённый символ, а
              WERASE стирает предыдущее слово.

       ECHOK  Если также указан ICANON, то символ KILL стирает текущую строку.

       ECHONL Если также указан ICANON, то символ NL отображается, даже если не указан ECHO.

       ECHOCTL
              (not in POSIX) If ECHO is also set, terminal special characters other than TAB, NL,
              START,  and  STOP  are  echoed as ^X, where X is the character with ASCII code 0x40
              greater than the special character.  For example, character 0x08 (BS) is echoed  as
              ^H.  [requires _BSD_SOURCE or _SVID_SOURCE]

       ECHOPRT
              (нет  в  POSIX)  Если  также  указаны ICANON и IECHO, то символы печатаются по мере
              того, как они стираются [требуется _BSD_SOURCE или _SVID_SOURCE].

       ECHOKE (нет в POSIX) Если также указан ICANON, то KILL выводится стиранием каждого символа
              в строке, как задано ECHOE и ECHOPRT [требуется _BSD_SOURCE или _SVID_SOURCE].

       DEFECHO
              (нет  в  POSIX)  Выводить (echo) только в момент чтения процессом (не реализовано в
              Linux).

       FLUSHO (нет в POSIX; не поддерживается в Linux) Выводимые данные  сбрасываются  (flushed).
              Этот   флаг   переключается   с  помощью  набираемого  символа  DISCARD  [требуется
              _BSD_SOURCE или _SVID_SOURCE].

       NOFLSH Отключить сброс (flushing) очередей ввода и  вывода  во  время  генерации  сигналов
              из-за символов INT, QUIT и SUSP.

       TOSTOP Послать  сигнал SIGTTOU группе процессов фонового процесса, который пытается писать
              на управляющий терминал.

       PENDIN (нет в POSIX; не поддерживается в Linux)  Все  символы  в  очереди  ввода  повторно
              печатаются,  когда  читается  последующий  символ  (это  используется в bash(1) для
              перехвата набираемого) [требуется _BSD_SOURCE или _SVID_SOURCE].

       IEXTEN Включить обработку ввода, определяемую реализацией. Этот флаг, как и ICANON, должен
              быть  включён  для  обработки  специальных символов EOL2, LNEXT, REPRINT, WERASE, а
              также для того, чтобы работал флаг IUCLC.

       Массивом c_cc определяются специальные символы терминала.  Символьные  индексы  (начальные
       значения) и их смысл:

       VDISCARD
              (нет   в  POSIX;  не  поддерживается  в  Linux;  017,  SI,  Ctrl-O)  Переключатель:
              включить/выключить отбрасывание ожидающего вывода. Распознаётся, если указан IEXTEN
              и, в этом случае, не передаётся как ввод.

       VDSUSP (нет  в  POSIX;  не  поддерживается  в  Linux;  031, EM, Ctrl-Y) Символ отложенного
              приостанова (DSUSP). Посылает сигнал  SIGTSTP  при  считывании  символа  программой
              пользователя.  Распознаётся,  если  указаны  IEXTEN  и ISIG, и система поддерживает
              управление заданиями. В этом случае не передаётся как ввод.

       VEOF   (004, EOT, Ctrl-D) Символ конца  файла  (EOF).  Этот  символ  заставляет  переслать
              ждущий  обработки  буфер  tty  ожидающей  программе пользователя без ожидания конца
              строки. Если это первый символ  в  строке,  то  read(2)  вернёт  программе  0,  что
              означает  конец  файла.  Распознаётся,  если  указан  ICANON,  и, в этом случае, не
              передаётся как ввод.

       VEOL   (0, NUL) Дополнительный  символ  конца  строки  (EOL).  Распознаётся,  если  указан
              ICANON.

       VEOL2  (нет  в  POSIX;  0,  NUL)  Ещё  один символ конца строки (EOL2). Распознаётся, если
              указан ICANON.

       VERASE (0177, DEL, rubout, или 010, BS, Ctrl-H, а также #) Символ забоя  (ERASE).  Стирает
              предыдущий  ещё  не  стёртый  символ,  но  не  стирает  за  EOF или началом строки.
              Распознаётся, если указан ICANON, и, в этом случае, не передаётся как ввод.

       VINTR  (003, ETX, Ctrl-C, а также 0177, DEL, rubout) Символ  прерывания  (INTR).  Посылает
              сигнал  SIGINT. Распознаётся, если указан ISIG, и, в этом случае, не передаётся как
              ввод.

       VKILL  (025, NAK, Ctrl-U, или Ctrl-X, а также @) Символ уничтожения (KILL).  Стирает  ввод
              начиная  с последнего EOF или начала строки. Распознаётся, если указан ICANON, и, в
              этом случае, не передаётся как ввод.

       VLNEXT (нет в POSIX; 026, SYN, Ctrl-V)  Следующий  символ  —  литера  (LNEXT).  Экранирует
              следующий   введённый   символ,   отменяя   его   возможное  специальное  значение.
              Распознаётся, если указан IEXTEN и, в этом случае, не передаётся как ввод.

       VMIN   Минимальное количество символов для неканонического чтения (MIN).

       VQUIT  (034, FS, Ctrl-\) Символ завершения (QUIT). Посылает сигнал SIGQUIT.  Распознаётся,
              если указан ISIG, и, в этом случае, не передаётся как ввод.

       VREPRINT
              (нет  в  POSIX;  022,  DC2, Ctrl-R) Вывести заново непрочитанные символы (REPRINT).
              Распознаётся, если указан ICANON и IEXTEN и, в этом случае, не передаётся как ввод.

       VSTART (021, DC1, Ctrl-Q)  Символ  запуска  (START).  Перезапускает  вывод,  остановленный
              символом  останова.  Распознаётся, если указан IXON и, в этом случае, не передаётся
              как ввод.

       VSTATUS
              (нет в POSIX; не поддерживается в  Linux;  запрос  состояния:  024,  DC4,  Ctrl-T).
              Символ  состояния  (STATUS).  Выводит  информацию  о состоянии на терминал, включая
              состояние активного (foreground) процесса и  количество  потраченного  времени  ЦП.
              Также   посылает  сигнал  SIGINFO  (не  поддерживается  в  Linux)  активной  группе
              процессов.

       VSTOP  (023, DC3, Ctrl-S) Символ останова  (STOP).  Приостанавливает  вывод  до  появления
              символа запуска. Распознаётся, если указан IXON и, в этом случае, не передаётся как
              ввод.

       VSUSP  (032,  SUB,  Ctrl-Z)  Символ   приостанова   (SUSP).   Посылает   сигнал   SIGTSTP.
              Распознаётся, если указан ISIG и, в этом случае, не передаётся как ввод.

       VSWTCH (нет  в  POSIX;  не  поддерживается  в  Linux; 0, NUL) Символ переключения (SWTCH).
              Используется в System V для переключения оболочек в слоях оболочек,  предшественник
              механизма управления задачами в оболочке.

       VTIME  Время ожидания в децисекундах для неканонического чтения (TIME).

       VWERASE
              (нет  в POSIX; 027, ETB, Ctrl-W) Стирание слова (WERASE). Распознаётся, если указан
              ICANON и IEXTEN и, в этом случае, не передаётся как ввод.

       Отдельные  специальные  терминальные  символы  могут  быть  выключены  указанием  значения
       _POSIX_VDISABLE в соответствующем элементе c_cc.

       Все  значения  индексов  этих символов различны, за исключением VTIME, VMIN, которые могут
       иметь те же значения, что и VEOL, VEOF, соответственно. В неканоническом  режиме  значения
       специальных  символов  используются  как  значения времени ожидания. Предназначение VMIN и
       VTIME смотрите в описании неканонического режима далее.

   Получение и изменение настроек терминала
       Функция tcgetattr() возвращает параметры, связанные с объектом, на который  ссылается  fd,
       сохраняя  их  в  структуре termios, на которую указывает termios_p. Эта функция может быть
       вызвана из фонового процесса; однако, атрибуты терминала  могут  в  дальнейшем  измениться
       активным процессом.

       Функция   tcsetattr()  изменяет  параметры  терминала  (если  это  позволяет  используемое
       оборудование) из структуры termios, на которую  указывает  termios_p.  В  optional_actions
       задаётся, когда параметры должны начать действовать:

       TCSANOW
              Изменения начинают действовать немедленно.

       TCSADRAIN
              Изменения  начинают  действовать  после  того,  как переданы все данные для вывода,
              записанные в fd. Это действие  должно  использоваться  при  работе  с  параметрами,
              которые влияют на вывод.

       TCSAFLUSH
              Изменения  начинают действовать после того, как все данные, записанные в объект, на
              который указывает fd, были переданы, и все данные,  которые  были  приняты,  но  не
              прочитаны, были отброшены.

   Канонический и неканонический режим
       Флагом  ICANON  в  c_lflag  определяется, в каком режиме работает терминал: в каноническом
       режиме (ICANON установлен), и неканоническом (ICANON не установлен). По  умолчанию  ICANON
       установлен.

       В каноническом режиме:

       •  Вводимые данные становятся доступны построчно. Входная строка становится доступна после
          набора одного из разделителей строк (NL,  EOL,  EOL2  или  EOF  в  начале  строки).  За
          исключением EOF, разделитель строк добавляется в буфер, возвращаемый read(2).

       •  Включено  редактирование  строки  (ERASE,  KILL;  и,  если указан флаг IEXTEN — WERASE,
          REPRINT, LNEXT). Вызов read(2) возвращает не более одной  строки  ввода;  если  read(2)
          запрашивает  меньше  байт,  чем  доступно в текущей вводимой строке, то читается только
          количество запрошенных  байт,  а  оставшиеся  символы  будут  доступны  для  следующего
          read(2).

       •  Максимальная длина строки - 4096 символов (включая завершающий символ перевода строки);
          строки длиннее 4096 символов будут обрезаны. После 4095 символов  обработка  ввода  (то
          есть  обработка  ISIG  и  ECHO*)  продолжится,  однако любые входящие данные после 4095
          символов  до  (но  не  включая)  любого  завершающего  символа   новой   строки   будут
          отбрасываться. Благодаря этому терминал всегда сможет принять больше входящих данных до
          тех пор, пока не появится хотя бы один перевод строки.

       В неканоническом режиме вводимые  данные  доступны  сразу  (без  введённого  пользователем
       символа  разделителя  строк),  обработка  ввода  не  выполняется  и  редактирование строки
       выключено. Буфер чтения принимает только 4095 символов; благодаря этому,  в  случае,  если
       режим ввода переключится в канонический, резервируется необходимое место для символа новой
       строки. Настройками MIN (c_cc[VMIN]) и TIME (c_cc[VTIME]) задаются  условия,  при  которых
       выполняется read(2); есть четыре варианта:

       MIN == 0, TIME == 0 (чтение опросом (polling read))
              Если  данные доступны, то read(2) завершает выполнение сразу, возвращая меньшее или
              запрошенное количество байт. Если данных нет, то read(2) возвращает 0.

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

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

       MIN  >  0,  TIME  >  0 (чтение с блокировкой по времени между байтами (read with interbyte
       timeout))
              В TIME указывается время срабатывания таймера в десятых долях секунды. После  того,
              как  первый  байт станет доступен, таймер перезапускается после каждого полученного
              байта. Вызов read(2) возвращает результат после удовлетворения любого из  следующих
              условий:

              •  Было получено MIN байт.

              •  Истекло время межбайтового таймера.

              •  Получено  запрошенное  read(2)  количество  байт  (в  POSIX  нет  этого  условия
                 завершения, и в некоторых реализациях read(2) не возвращает  управление  в  этом
                 случае).

              Так  как  таймер  запускается только после приёма начального байта, будет прочитан,
              как минимум, один байт. Если на момент вызова read(2) данные  уже  были,  то  вызов
              действует так, как если бы данные были получены сразу после вызова.

       В POSIX не указано, имеет ли флаг состояния файла O_NONBLOCK приоритет над настройками MIN
       и TIME. Если O_NONBLOCK установлен, то  read(2)  в  неканоническом  режиме  может  вернуть
       управление сразу же, независимо от настройки MIN или TIME. Более того, если данных нет, то
       в POSIX разрешено read(2) в неканоническом режиме вернуть или 0, или -1 с установкой errno
       равной EAGAIN.

   Режим без обработки
       Функция  cfmakeraw()  переводит  терминал  в нечто похожее на режим «raw» старого драйвера
       терминала Version 7: ввод доступен символ за символом, эхо  отключено  и  все  специальные
       обработки  символов  при  вводе  и  выводе  также  отключены.  Задаются следующие атрибуты
       терминала:

           termios_p->c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP
                           | INLCR | IGNCR | ICRNL | IXON);
           termios_p->c_oflag &= ~OPOST;
           termios_p->c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
           termios_p->c_cflag &= ~(CSIZE | PARENB);
           termios_p->c_cflag |= CS8;

   Управление линией
       tcsendbreak()  transmits a continuous stream of zero-valued bits for a specific  duration,
       if  the  terminal is using asynchronous serial data transmission.  If duration is zero, it
       transmits zero-valued bits for at least 0.25 seconds, and not more than 0.5  seconds.   If
       duration  is not zero, it sends zero-valued bits for some implementation-defined length of
       time.

       Если терминал не использует асинхронную  передачу  данных,  то  tcsendbreak()  заканчивает
       работу, не предпринимая каких-либо действий.

       Функция  tcdrain() ждёт, пока все данные вывода, записанные в объект, на который ссылается
       fd, не будут переданы.

       Функция tcflush() отбрасывает (discards) данные, записанные, но не переданные в объект, на
       который  ссылается  fd,  или  принятые,  но  не  прочитанные  (в  зависимости  от значения
       queue_selector):

       TCIFLUSH
              Отбросить принятые, но не прочитанные данные.

       TCOFLUSH
              Отбросить записанные, но не переданные данные.

       TCIOFLUSH
              Отбросить принятые, но не прочитанные данные и записанные, но не переданные данные.

       Функция tcflow() задерживает передачу или приём данных объектом, на который  ссылается  fd
       (в зависимости от значения action):

       TCOOFF Задержать вывод.

       TCOON  Возобновить задержанный вывод.

       TCIOFF Передать  символ STOP, который останавливает передачу данных в систему с устройства
              терминала.

       TCION  Передать символ START, который начинает передачу  данных  в  систему  с  устройства
              терминала.

       По умолчанию при открытии файла терминала ни ввод, ни вывод не приостановлены.

   Скорость линии
       Функции  работы  со  скоростью  передачи (в бодах) предназначены для получения и установки
       значений скоростей ввода и вывода в структуре termios. Новые значения не  действуют,  пока
       не будет вызвана tcsetattr().

       При  установке  скорости  B0  модему  передаётся  команда  «повесить  трубку». Фактическая
       скорость, соответствующая B38400, может быть изменена с помощью setserial(8).

       Скорости ввода и вывода хранятся в структуре termios.

       Функция cfgetospeed() возвращает скорость вывода данных, хранящуюся в  структуре  termios,
       на которую указывает termios_p.

       Функция  cfsetospeed()  устанавливает  скорость  вывода  данных  из  поля  speed структуры
       termios, на которую указывает termios_p. Значение должно быть  равно  одной  из  следующих
       констант:

              B0
              B50
              B75
              B110
              B134
              B150
              B200
              B300
              B600
              B1200
              B1800
              B2400
              B4800
              B9600
              B19200
              B38400
              B57600
              B115200
              B230400
              B460800
              B500000
              B576000
              B921600
              B1000000
              B1152000
              B1500000
              B2000000

       These constants are additionally supported on the SPARC architecture:

              B76800
              B153600
              B307200
              B614400

       These constants are additionally supported on non-SPARC architectures:

              B2500000
              B3000000
              B3500000
              B4000000

       Due  to  differences  between  architectures,  portable  applications  should  check  if a
       particular Bnnn constant is defined prior to using it.

       The zero baud rate, B0, is used to terminate the connection.   If  B0  is  specified,  the
       modem control lines shall no longer be asserted.  Normally, this will disconnect the line.
       CBAUDEX is a mask for the speeds beyond those defined in POSIX.1 (57600 and above).  Thus,
       B57600 & CBAUDEX is nonzero.

       Setting  the  baud  rate to a value other than those defined by Bnnn constants is possible
       via the TCSETS2 ioctl; see ioctl_tty(2).

       Функция cfgetispeed() возвращает скорость ввода данных, хранящуюся в структуре termios.

       cfsetispeed()  sets the input baud rate stored in the termios structure  to  speed,  which
       must  be  specified  as  one of the Bnnn constants listed above for cfsetospeed().  If the
       input baud rate is set to the literal constant 0 (not the symbolic constant B0), the input
       baud rate will be equal to the output baud rate.

       Функция  cfsetspeed()  является  расширением  4.4BSD.  Она  имеет  те  же  аргументы что и
       cfsetispeed(), и задаёт сразу скорость и ввода и вывода.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       Функция cfgetispeed() возвращает скорость ввода данных, хранящуюся в структуре termios.

       Функция cfgetospeed() возвращает скорость вывода данных, хранящуюся в структуре termios.

       Все остальные функции возвращают:

       0      при успешном выполнении.

       -1     при ошибках и errno присваивается код ошибки.

       Заметим, что tcsetattr() завершается без ошибок, если  любое  запрошенное  изменение  было
       успешно  выполнено.  Поэтому,  при  одновременном  изменении  нескольких параметров, может
       понадобиться вызвать tcgetattr()  для  того,  чтобы  убедиться,  что  все  изменения  были
       выполнены.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).

       ┌───────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ИнтерфейсАтрибутЗначение │
       ├───────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │tcgetattr(), tcsetattr(), tcdrain(), tcflush(),        │ Безвредность в нитях │ MT-Safe  │
       │tcflow(), tcsendbreak(), cfmakeraw(), cfgetispeed(),   │                      │          │
       │cfgetospeed(), cfsetispeed(), cfsetospeed(),           │                      │          │
       │cfsetspeed()                                           │                      │          │
       └───────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

       Функции  tcgetattr(),  tcsetattr(),   tcsendbreak(),   tcdrain(),   tcflush(),   tcflow(),
       cfgetispeed(), cfgetospeed(), cfsetispeed() и cfsetospeed() определены в POSIX.1-2001.

       Функций cfmakeraw() и cfsetspeed() нет в стандарте, но есть в BSD.

ЗАМЕЧАНИЯ

       UNIX V7  and  several  later  systems  have a list of baud rates where after the values B0
       through B9600 one finds the two constants EXTA, EXTB  ("External  A"  and  "External  B").
       Many systems extend the list with much higher baud rates.

       Ненулевое  значение  duration  с tcsendbreak() приводит к неизвестному результату. В SunOS
       задана пауза duration * N секунд, где N равно не менее 0.25, и не более 0.5. В Linux, AIX,
       DU,  Tru64  делается  пауза  в  duration  миллисекунд.  В FreeBSD и NetBSD и HP-UX и MacOS
       значение duration игнорируется. В Solaris и UnixWare  функция  tcsendbreak()  с  ненулевым
       duration работает аналогично tcdrain().

ДЕФЕКТЫ

       On the Alpha architecture before Linux 4.16 (and glibc before glibc 2.28), the XTABS value
       was different from TAB3 and it was ignored by  the  N_TTY  line  discipline  code  of  the
       terminal driver as a result (because as it wasn't part of the TABDLY mask).

СМ. ТАКЖЕ

       reset(1),  setterm(1),  stty(1), tput(1), tset(1), tty(1), ioctl_console(2), ioctl_tty(2),
       cc_t(3type), speed_t(3type), tcflag_t(3type), setserial(8)

ПЕРЕВОД

       Русский   перевод   этой    страницы    руководства    был    сделан    Azamat    Hackimov
       <azamat.hackimov@gmail.com>,   Dmitry   Bolkhovskikh  <d20052005@yandex.ru>,  Yuri  Kozlov
       <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе  этой  страницы  руководства,  пожалуйста,  отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.