.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2002 Walter Harms .\" and Andries Brouwer . .\" .\" SPDX-License-Identifier: GPL-1.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ioctl_tty 2 "31 октября 2023 г." "Linux man\-pages 6.06" .SH ИМЯ ioctl_tty \- вызовы ioctl для терминалов и последовательных портов .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP \fB#include \fP /* Definition of \fBstruct termios\fP, \fB struct termios2\fP, and \fB Bnnn\fP, \fBBOTHER\fP, \fBCBAUD\fP, \fBCLOCAL\fP, \fB TC*\fP{\fBFLUSH\fP,\fBON\fP,\fBOFF\fP} and other constants */ .P \fBint ioctl(int \fP\fIfd\fP\fB, int \fP\fIcmd\fP\fB, ...);\fP .fi .SH ОПИСАНИЕ Вызов \fBioctl\fP(2) для терминалов и последовательных портов принимает много разных параметров команд. Большинство из них требуют при этом третий аргумент разных типов, далее по тексту называемый \fIargp\fP или \fIarg\fP. .P Вызовы \fIioctl\fP() используются только в непереносимых программах. По возможности старайтесь везде использовать интерфейс POSIX, описанный в \fBtermios\fP(3). .P Please note that \fBstruct termios\fP from \fI\fP is different and incompatible with \fBstruct termios\fP from \fI\fP. These ioctl calls require \fBstruct termios\fP from \fI\fP. .SS "Определение и установка атрибутов терминала" .TP \fBTCGETS\fP Аргумент: \fBstruct termios\~*\fP\fIargp\fP .IP Эквивалентно \fItcgetattr(fd, argp)\fP. .IP Получить текущие настройки последовательного порта. .TP \fBTCSETS\fP Аргумент: \fBconst struct termios\~*\fP\fIargp\fP .IP Эквивалентно \fItcsetattr(fd, TCSANOW, argp)\fP. .IP Установить новые текущие настройки последовательного порта. .TP \fBTCSETSW\fP Аргумент: \fBconst struct termios\~*\fP\fIargp\fP .IP Эквивалентно \fItcsetattr(fd, TCSADRAIN, argp)\fP. .IP Позволить очистить буфер вывода и установить новые текущие настройки последовательного порта. .TP \fBTCSETSF\fP Аргумент: \fBconst struct termios\~*\fP\fIargp\fP .IP Эквивалентно \fItcsetattr(fd, TCSAFLUSH, argp)\fP. .IP Позволить очистить буфер вывода, отменить ожидаемые данные на входе и установить новые текущие настройки последовательного порта. .P .\" commit 64bb6c5e1ddcd47c951740485026ef08975ee2e6 .\" commit 592ee3a5e5e2a981ef2829a0380093006d045661 The following four ioctls, added in Linux 2.6.20, are just like \fBTCGETS\fP, \fBTCSETS\fP, \fBTCSETSW\fP, \fBTCSETSF\fP, except that they take a \fIstruct termios2\~*\fP instead of a \fIstruct termios\~*\fP. If the structure member \fBc_cflag\fP contains the flag \fBBOTHER\fP, then the baud rate is stored in the structure members \fBc_ispeed\fP and \fBc_ospeed\fP as integer values. These ioctls are not supported on all architectures. .RS .TS lb l. TCGETS2 \fBstruct termios2 *\fPargp TCSETS2 \fBconst struct termios2 *\fPargp TCSETSW2 \fBconst struct termios2 *\fPargp TCSETSF2 \fBconst struct termios2 *\fPargp .TE .RE .P Следующие четыре вызова ioctl аналогичны \fBTCGETS\fP, \fBTCSETS\fP, \fBTCSETSW\fP, \fBTCSETSF\fP, за исключением того, что они работают с \fIstruct termio\~*\fP, а не с \fIstruct termios\~*\fP. .RS .TS lb l. TCGETA \fBstruct termio *\fPargp TCSETA \fBconst struct termio *\fPargp TCSETAW \fBconst struct termio *\fPargp TCSETAF \fBconst struct termio *\fPargp .TE .RE .SS "Блокировка структуры termios" Структура \fItermios\fP для терминала может быть заблокирована. Блокировка сама по себе является структурой \fItermios\fP, но с ненулевыми битами или полями, обозначающими заблокированные значения. .TP \fBTIOCGLCKTRMIOS\fP Аргумент: \fBstruct termios\~*\fP\fIargp\fP .IP Получить состояние блокировки структуры \fItermios\fP терминала. .TP \fBTIOCSLCKTRMIOS\fP Аргумент: \fBconst struct termios\~*\fP\fIargp\fP .IP Установить состояние блокировки структуры \fItermios\fP терминала. Это может делать только процесс с мандатом \fBCAP_SYS_ADMIN\fP. .SS "Определение и установка размера окна" Размеры окон хранятся в ядре, но не используются им (за исключением случаев виртуальных консолей, где ядро обновляет размер окна при его изменении, например из\-за загрузки новых шрифтов). .TP \fBTIOCGWINSZ\fP Аргумент: \fBstruct winsize\~*\fP\fIargp\fP .IP Получить размер окна. .TP \fBTIOCSWINSZ\fP Аргумент: \fBconst struct winsize\~*\fP\fIargp\fP .IP Установить размер окна. .P Структура, используемая этими системными вызовами ioctl, определяется так: .P .in +4n .EX struct winsize { unsigned short ws_row; unsigned short ws_col; unsigned short ws_xpixel; /* не используется */ unsigned short ws_ypixel; /* не используется */ }; .EE .in .P При изменении размера окна отправляется сигнал \fBSIGWINCH\fP группе активных (foreground) процессов. .SS "Отправка сигнала Break" .TP \fBTCSBRK\fP Аргумент: \fBint \fP\fIarg\fP .IP Эквивалентно \fItcsendbreak(fd, arg)\fP. .IP Если терминал использует асинхронную передачу данных и \fIarg\fP равно нулю, то отправляется сигнал break (поток нулевых битов) в течении 0.25 \- 0.5 секунд. Если терминал не использует асинхронную передачу данных, то либо сигнал break не отправляется, либо функция просто завершает работу, ничего не исполняя. Если \fIarg\fP не равно нулю, то неизвестно, что произойдет. .IP (В SVr4, UnixWare, Solaris и Linux \fItcsendbreak(fd,arg)\fP ненулевые значение \fIarg\fP воспринимается аналогично вызову \fItcdrain(fd)\fP. В SunOS \fIarg\fP воспринимается как множитель и отправляет поток битов в \fIarg\fP раз дольше, чем для нулевого значения \fIarg\fP. В DG/UX и AIX \fIarg\fP (если оно не равно нулю) воспринимается как временной интервал в миллисекундах. В HP\-UX \fIarg\fP игнорируется.) .TP \fBTCSBRKP\fP Аргумент: \fBint \fP\fIarg\fP .IP Так называемая «POSIX\-версия» \fBTCSBRK\fP. Она воспринимает ненулевые значения \fIarg\fP как временной интервал в децисекундах (1/10 секунды), и ничего не делает, если драйвер не поддерживает сигналы break. .TP \fBTIOCSBRK\fP Аргумент: \fBvoid\fP .IP Включить сигнал break, то есть начать отправку нулевых битов. .TP \fBTIOCCBRK\fP Аргумент: \fBvoid\fP .IP Выключить сигнал break, то есть прекратить отправку нулевых битов. .SS "Программное управление потоком" .TP \fBTCXONC\fP Аргумент: \fBint \fP\fIarg\fP .IP Эквивалентно \fItcflow(fd, arg)\fP. .IP Смотрите \fBtcflow\fP(3) со значениями аргументов \fBTCOOFF\fP, \fBTCOON\fP, \fBTCIOFF\fP, \fBTCION\fP. .SS "Счетчик буфера и очистка" .TP \fBFIONREAD\fP Аргумент: \fBint\~*\fP\fIargp\fP .IP Получить количество байтов в буфере ввода. .TP \fBTIOCINQ\fP Аргумент: \fBint\~*\fP\fIargp\fP .IP То же что и \fBFIONREAD\fP. .TP \fBTIOCOUTQ\fP Аргумент: \fBint\~*\fP\fIargp\fP .IP Получить количество байтов в буфере вывода. .TP \fBTCFLSH\fP Аргумент: \fBint \fP\fIarg\fP .IP Эквивалентно \fItcflush(fd, arg)\fP. .IP Смотрите \fBtcflush\fP(3) со значениями аргументов \fBTCIFLUSH\fP, \fBTCOFLUSH\fP, \fBTCIOFLUSH\fP. .TP \fBTIOCSERGETLSR\fP Аргумент: \fBint\~*\fP\fIargp\fP .IP Get line status register. Status register has \fBTIOCSER_TEMT\fP bit set when output buffer is empty and also hardware transmitter is physically empty. .IP Does not have to be supported by all serial tty drivers. .IP \fBtcdrain\fP(3) does not wait and returns immediately when \fBTIOCSER_TEMT\fP bit is set. .SS "Мнимый ввод" .TP \fBTIOCSTI\fP Аргумент: \fBconst char\~*\fP\fIargp\fP .IP Вставить заданный байт в очередь ввода. .IP .\" commit 690c8b804ad2eafbd35da5d3c95ad325ca7d5061 .\" commit 83efeeeb3d04b22aaed1df99bc70a48fe9d22c4d Since Linux 6.2, this operation may require the \fBCAP_SYS_ADMIN\fP capability (if the \fIdev.tty.legacy_tiocsti\fP sysctl variable is set to false). .SS "Перенаправление вывода консоли" .TP \fBTIOCCONS\fP Аргумент: \fBvoid\fP .IP Redirect output that would have gone to \fI/dev/console\fP or \fI/dev/tty0\fP to the given terminal. If that was a pseudoterminal master, send it to the slave. Before Linux 2.6.10, anybody can do this as long as the output was not redirected yet; since Linux 2.6.10, only a process with the \fBCAP_SYS_ADMIN\fP capability may do this. If output was redirected already, then \fBEBUSY\fP is returned, but redirection can be stopped by using this ioctl with \fIfd\fP pointing at \fI/dev/console\fP or \fI/dev/tty0\fP. .SS "Управляющий терминал" .TP \fBTIOCSCTTY\fP Аргумент: \fBint \fP\fIarg\fP .IP Сделать заданный терминал управляющим для вызывающего процесса. Вызывающий процесс должен быть лидером сеанса и не иметь управляющего терминала. Для этого случая значение \fIarg\fP должно быть равно 0. .IP Если этот терминал уже является управляющим для другой группы сеансов, то ioctl завершается с ошибкой \fBEPERM\fP, если только вызывающий не имеет мандата \fBCAP_SYS_ADMIN\fP и \fIarg\fP не равно 1 — в этом случае терминал отбирается и все процессы, где он был управляющим, теряют его. .TP \fBTIOCNOTTY\fP Аргумент: \fBvoid\fP .IP Если заданный терминал является управляющим для вызывающего процесса, то выполняется отключение этого управляющего терминала. Если процесс был лидером сеанса, то активной группе процессов посылаются сигналы \fBSIGHUP\fP и \fBSIGCONT\fP, и все процессы в этом сеансе теряют управляющий терминал. .SS "Группа процессов и идентификатор сеанса" .TP \fBTIOCGPGRP\fP Аргумент: \fBpid_t\~*\fP\fIargp\fP .IP При успешном выполнении эквивалентно \fI*argp = tcgetpgrp(fd)\fP. .IP Получить идентификатор активной группы процессов данного терминала. .TP \fBTIOCSPGRP\fP Аргумент: \fBconst pid_t\~*\fP\fIargp\fP .IP Эквивалентно \fItcsetpgrp(fd, *argp)\fP. .IP Установить идентификатор активной группы процессов данного терминала. .TP \fBTIOCGSID\fP Аргумент: \fBpid_t\~*\fP\fIargp\fP .IP При успешном выполнении эквивалентно \fI*argp = tcgetsid(fd)\fP. .IP Получить идентификатор сеанса данного терминала. Завершается ошибкой \fBENOTTY\fP, если терминал не является основным псевдо\-терминалом и не является управляющим для вызывающего процесса. Странно. .SS "Закрытый (Exclusive) режим" .TP \fBTIOCEXCL\fP Аргумент: \fBvoid\fP .IP Перевести терминал в закрытый режим. Дальнейшие операции \fBopen\fP(2) с терминалом запрещены (выдают ошибку \fBEBUSY\fP, если процесс не имеет мандата \fBCAP_SYS_ADMIN\fP). .TP \fBTIOCGEXCL\fP Аргумент: \fBint\~*\fP\fIargp\fP .IP (начиная с Linux 3.8) Если терминал находится в закрытом режиме, поместить ненулевое значение в расположение, указанное \fIargp\fP; в противном случае, поместить ноль в \fI*argp\fP. .TP \fBTIOCNXCL\fP Аргумент: \fBvoid\fP .IP Отменить закрытый режим. .SS "Параметры линии" .TP \fBTIOCGETD\fP Аргумент: \fBint\~*\fP\fIargp\fP .IP Получить параметры линии для терминала. .TP \fBTIOCSETD\fP Аргумент: \fBconst int\~*\fP\fIargp\fP .IP Установить параметры линии для терминала. .SS "Вызовы ioctl для псевдо\-терминала" .TP \fBTIOCPKT\fP Аргумент: \fBconst int\~*\fP\fIargp\fP .IP Enable (when *\fIargp\fP is nonzero) or disable packet mode. Can be applied to the master side of a pseudoterminal only (and will return \fBENOTTY\fP otherwise). In packet mode, each subsequent \fBread\fP(2) will return a packet that either contains a single nonzero control byte, or has a single byte containing zero (\[aq]\e0\[aq]) followed by data written on the slave side of the pseudoterminal. If the first byte is not \fBTIOCPKT_DATA\fP (0), it is an OR of one or more of the following bits: .IP .ad l .TS lb l. TIOCPKT_FLUSHREAD T{ The read queue for the terminal is flushed. T} TIOCPKT_FLUSHWRITE T{ The write queue for the terminal is flushed. T} TIOCPKT_STOP T{ Output to the terminal is stopped. T} TIOCPKT_START T{ Output to the terminal is restarted. T} TIOCPKT_DOSTOP T{ The start and stop characters are \fB\[ha]S\fP/\fB\[ha]Q\fP. T} TIOCPKT_NOSTOP T{ The start and stop characters are not \fB\[ha]S\fP/\fB\[ha]Q\fP. T} .TE .ad .IP While packet mode is in use, the presence of control status information to be read from the master side may be detected by a \fBselect\fP(2) for exceptional conditions or a \fBpoll\fP(2) for the \fBPOLLPRI\fP event. .IP This mode is used by \fBrlogin\fP(1) and \fBrlogind\fP(8) to implement a remote\-echoed, locally \fB\[ha]S\fP/\fB\[ha]Q\fP flow\-controlled remote login. .TP \fBTIOCGPKT\fP Аргумент: \fBconst int\~*\fP\fIargp\fP .IP (начиная с Linux 3.8) Вернуть текущую настройку пакетного режима в виде целого в память, на которую указывает \fIargp\fP. .TP \fBTIOCSPTLCK\fP Аргумент: \fBint\~*\fP\fIargp\fP .IP Set (if \fI*argp\fP is nonzero) or remove (if \fI*argp\fP is zero) the lock on the pseudoterminal slave device. (See also \fBunlockpt\fP(3).) .TP \fBTIOCGPTLCK\fP Аргумент: \fBint\~*\fP\fIargp\fP .IP (начиная с Linux 3.8) Поместить текущее состояние блокировки устройства подчинённого псевдо\-терминала в расположение, на которое указывает \fIargp\fP. .TP \fBTIOCGPTPEER\fP Аргумент: \fBint \fP\fIflags\fP .IP .\" commit 54ebbfb1603415d9953c150535850d30609ef077 (начиная с Linux 4.13) Открыть (флаги \fIflags\fP как у \fBopen\fP(2)) переданный в \fIfd\fP файловый дескриптор, который ссылается на основной псевдо\-терминал, и вернуть новый файловый дескриптор, который ссылается на ответное устройство подчинённого псевдо\-терминала. Данная операция может выполняться независимо от доступности имени подчинённого устройства в пространстве монтирования вызывающего процесса. .IP Безопасным приложениям, работающим с пространствами имён, лучше использовать эту операцию вместо \fBopen\fP(2) с путём, возвращаемым \fBptsname\fP(3) и подобных библиотечных функций, имеющих небезопасные программные интерфейсы (например, в некоторых случаях может получиться путаница при использовании \fBptsname\fP(3) с путём, если файловая система devpts была смонтирована в другое пространство имён). .P Вызовы ioctl для BSD \(em \fBTIOCSTOP\fP, \fBTIOCSTART\fP, \fBTIOCUCNTL\fP и \fBTIOCREMOTE\fP \(em не реализованы в Linux. .SS "Управление модемом" .TP \fBTIOCMGET\fP Аргумент: \fBint\~*\fP\fIargp\fP .IP Получить состояние битов модема. .TP \fBTIOCMSET\fP Аргумент: \fBconst int\~*\fP\fIargp\fP .IP Установить состояние битов модема. .TP \fBTIOCMBIC\fP Аргумент: \fBconst int\~*\fP\fIargp\fP .IP Очистить указанные биты модема. .TP \fBTIOCMBIS\fP Аргумент: \fBconst int\~*\fP\fIargp\fP .IP Установить указанные биты модема. .P Приведёнными выше ioctl используются следующие биты: .P .TS lb l. TIOCM_LE DSR (data set ready/line enable) TIOCM_DTR DTR (data terminal ready) TIOCM_RTS RTS (request to send) TIOCM_ST Secondary TXD (transmit) TIOCM_SR Secondary RXD (receive) TIOCM_CTS CTS (clear to send) TIOCM_CAR DCD (data carrier detect) TIOCM_CD смотрите TIOCM_CAR TIOCM_RNG RNG (ring) TIOCM_RI смотрите TIOCM_RNG TIOCM_DSR DSR (data set ready) .TE .TP \fBTIOCMIWAIT\fP Аргумент: \fBint \fP\fIarg\fP .IP Ждать изменения любого из 4 битов модема (DCD, RI, DSR, CTS). Интересующие биты указываются в \fIarg\fP в виде битовой маски с помощью операции OR значений \fBTIOCM_RNG\fP, \fBTIOCM_DSR\fP, \fBTIOCM_CD\fP и \fBTIOCM_CTS\fP. Чтобы понять какие биты изменились вызывающий должен использовать \fBTIOCGICOUNT\fP. .TP \fBTIOCGICOUNT\fP Аргумент: \fBstruct serial_icounter_struct\~*\fP\fIargp\fP .IP Получить счётчики входных прерываний последовательной линии (DCD, RI, DSR, CTS). Счётчики записываются в структуру \fIserial_icounter_struct\fP, на которую указывает \fIargp\fP. .IP Замечание: считаются переходы 1\->0 и 0\->1, за исключением RI, где учитывается только переход 0\->1. .SS "Маркировка линии как локальной" .TP \fBTIOCGSOFTCAR\fP Аргумент: \fBint\~*\fP\fIargp\fP .IP («получение флага программной несущей») Получить состояние флага CLOCAL в поле c_cflag структуры \fItermios\fP. .TP \fBTIOCSSOFTCAR\fP Аргумент: \fBconst int\~*\fP\fIargp\fP .IP («установка флага программной несущей») Установить флаг CLOCAL в поле c_cflag структуры \fItermios\fP при *\fIargp\fP не равном нулю или очистить его в противном случае. .P Если флаг \fBCLOCAL\fP для линии не установлен, то учитывается сигнал DCD, а вызов \fBopen\fP(2) для соответствующего терминала будет блокирован, пока не появится сигнал DCD ( если не установлен флаг \fBO_NONBLOCK\fP). Если флаг \fBCLOCAL\fP установлен, то линия ведёт себя так, как если DCD установлен всегда. Программное задание несущего сигнала обычно включено для локальных устройств и выключено для модемных линий. .SS "Вызовы, определённые только в Linux" Описание вызова ioctl \fBTIOCLINUX\fP смотрите в \fBioctl_console\fP(2). .SS "Отладка ядра" \fB#include \fP .TP \fBTIOCTTYGSTRUCT\fP Аргумент: \fBstruct tty_struct\~*\fP\fIargp\fP .IP .\" commit b3506a09d15dc5aee6d4bb88d759b157016e1864 .\" Author: Andries E. Brouwer .\" Date: Tue Apr 1 04:42:46 2003 -0800 .\" .\" [PATCH] kill TIOCTTYGSTRUCT .\" .\" Only used for (dubious) debugging purposes, and exposes .\" internal kernel state. .\" .\" .SS Serial info .\" .BR "#include " .\" .P .\" .TP .\" .BI "TIOCGSERIAL struct serial_struct *" argp .\" Get serial info. .\" .TP .\" .BI "TIOCSSERIAL const struct serial_struct *" argp .\" Set serial info. Получить структуру \fItty_struct\fP, соответствующую \fIfd\fP. Эта команда удалена в Linux 2.5.67. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" The \fBioctl\fP(2) system call returns 0 on success. On error, it returns \-1 and sets \fIerrno\fP to indicate the error. .SH ОШИБКИ .TP \fBEINVAL\fP Неизвестный параметр команды. .TP \fBENOIOCTLCMD\fP Неизвестная команда. .TP \fBENOTTY\fP Неподходящий \fIfd\fP. .TP \fBEPERM\fP Недостаточно прав. .SH ПРИМЕРЫ Проверка состояния DTR на последовательном порту. .P .\" SRC BEGIN (tiocmget.c) .EX #include #include #include #include \& int main(void) { int fd, serial; \& fd = open("/dev/ttyS0", O_RDONLY); ioctl(fd, TIOCMGET, &serial); if (serial & TIOCM_DTR) puts("TIOCM_DTR is set"); else puts("TIOCM_DTR is not set"); close(fd); } .EE .\" SRC END .P Get or set arbitrary baudrate on the serial port. .P .\" SRC BEGIN (tcgets.c) .EX /* SPDX\-License\-Identifier: GPL\-2.0\-or\-later */ \& #include #include #include #include #include #include \& int main(int argc, char *argv[]) { #if !defined BOTHER fprintf(stderr, "BOTHER is unsupported\en"); /* Program may fallback to TCGETS/TCSETS with Bnnn constants */ exit(EXIT_FAILURE); #else /* Declare tio structure, its type depends on supported ioctl */ # if defined TCGETS2 struct termios2 tio; # else struct termios tio; # endif int fd, rc; \& if (argc != 2 && argc != 3 && argc != 4) { fprintf(stderr, "Usage: %s device [output [input] ]\en", argv[0]); exit(EXIT_FAILURE); } \& fd = open(argv[1], O_RDWR | O_NONBLOCK | O_NOCTTY); if (fd < 0) { perror("open"); exit(EXIT_FAILURE); } \& /* Get the current serial port settings via supported ioctl */ # if defined TCGETS2 rc = ioctl(fd, TCGETS2, &tio); # else rc = ioctl(fd, TCGETS, &tio); # endif if (rc) { perror("TCGETS"); close(fd); exit(EXIT_FAILURE); } \& /* Change baud rate when more arguments were provided */ if (argc == 3 || argc == 4) { /* Clear the current output baud rate and fill a new value */ tio.c_cflag &= \[ti]CBAUD; tio.c_cflag |= BOTHER; tio.c_ospeed = atoi(argv[2]); \& /* Clear the current input baud rate and fill a new value */ tio.c_cflag &= \[ti](CBAUD << IBSHIFT); tio.c_cflag |= BOTHER << IBSHIFT; /* When 4th argument is not provided reuse output baud rate */ tio.c_ispeed = (argc == 4) ? atoi(argv[3]) : atoi(argv[2]); \& /* Set new serial port settings via supported ioctl */ # if defined TCSETS2 rc = ioctl(fd, TCSETS2, &tio); # else rc = ioctl(fd, TCSETS, &tio); # endif if (rc) { perror("TCSETS"); close(fd); exit(EXIT_FAILURE); } \& /* And get new values which were really configured */ # if defined TCGETS2 rc = ioctl(fd, TCGETS2, &tio); # else rc = ioctl(fd, TCGETS, &tio); # endif if (rc) { perror("TCGETS"); close(fd); exit(EXIT_FAILURE); } } \& close(fd); \& printf("output baud rate: %u\en", tio.c_ospeed); printf("input baud rate: %u\en", tio.c_ispeed); \& exit(EXIT_SUCCESS); #endif } .EE .\" SRC END .SH "СМ. ТАКЖЕ" \fBldattach\fP(8), \fBioctl\fP(2), \fBioctl_console\fP(2), \fBtermios\fP(3), \fBpty\fP(7) .\" .\" FIONBIO const int * .\" FIONCLEX void .\" FIOCLEX void .\" FIOASYNC const int * .\" from serial.c: .\" TIOCSERCONFIG void .\" TIOCSERGWILD int * .\" TIOCSERSWILD const int * .\" TIOCSERGSTRUCT struct async_struct * .\" TIOCSERGETMULTI struct serial_multiport_struct * .\" TIOCSERSETMULTI const struct serial_multiport_struct * .\" TIOCGSERIAL, TIOCSSERIAL (see above) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Azamat Hackimov , Dmitriy S. Seregin , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .