pty(7)

ИМЯ
pty - интерфейсы псевдо-терминалов

ОПИСАНИЕ
A pseudoterminal (sometimes abbreviated "pty") is a pair of virtual character devices that provide a bidirectional communication channel. One end of the channel is called the master; the other end is called the slave.

The slave end of the pseudoterminal provides an interface that behaves exactly like a classical terminal. A process that expects to be connected to a terminal, can open the slave end of a pseudoterminal and then be driven by a program that has opened the master end. Anything that is written on the master end is provided to the process on the slave end as though it was input typed on a terminal. For example, writing the interrupt character (usually control-C) to the master device would cause an interrupt signal (SIGINT) to be generated for the foreground process group that is connected to the slave. Conversely, anything that is written to the slave end of the pseudoterminal can be read by the process that is connected to the master end.

Поток данных между основным и подчинённым концом обрабатывается асинхронно, почти как поток с физического терминала. Данные, записываемые в подчинённый конец, будут доступны без промедления, но могут быть недоступны немедленно. Схожим образом, есть маленькая задержка обработки между записью в основной конец и когда эти данные станут видимы на подчинённом конце.

Исторически существует два программных интерфейса для взаимодействия с псевдо-терминалами: BSD и System V. В SUSv1 стандартизирован программный интерфейс, основанный на программном интерфейсе System V, который должен применяться во всех новых программах, использующих псевдо-терминалы.

Linux provides both BSD-style and (standardized) System V-style pseudoterminals. System V-style terminals are commonly called UNIX 98 pseudoterminals on Linux systems.

Since Linux 2.6.4, BSD-style pseudoterminals are considered deprecated: support can be disabled when building the kernel by disabling the CONFIG_LEGACY_PTYS option. (Starting with Linux 2.6.30, that option is disabled by default in the mainline kernel.) UNIX 98 pseudoterminals should be used in new applications.

  Псевдо-терминалы UNIX 98
Незадействованный основной псевдо-терминал UNIX 98 открывается вызовом posix_openpt(3) (эта функция открывает основное клонирующее устройство, /dev/ptmx; смотрите pts(4)). После выполнения специальной программной инициализации (с помощью grantpt(3) изменяется владелец и права на подчинённое устройство и с помощью unlockpt(3) разблокируется подчинённое устройство), соответствующее подчинённое устройство можно открыть, передав имя, полученное от ptsname(3), в вызов open(2).

The Linux kernel imposes a limit on the number of available UNIX 98 pseudoterminals. Up to and including Linux 2.6.3, this limit is configured at kernel compilation time (CONFIG_UNIX98_PTYS), and the permitted number of pseudoterminals can be up to 2048, with a default setting of 256. Since Linux 2.6.4, the limit is dynamically adjustable via /proc/sys/kernel/pty/max, and a corresponding file, /proc/sys/kernel/pty/nr, indicates how many pseudoterminals are currently in use. For further details on these two files, see proc(5).

  Псевдо-терминалы BSD
Псевдо-терминалы в стиле BSD предоставляются в виде заранее созданных пар, с именами вида /dev/ptyXY (основной) и /dev/ttyXY (подчинённый), где X это буква из 16-символьного набора [p-za-e], а Y это буква из 16-символьного набора [0-9a-f] (точный диапазон символов этих наборов отличается в разных реализациях UNIX). Например, /dev/ptyp1 и /dev/ttyp1 составляют псевдо-терминальную пару BSD. Процесс находит неиспользуемую псевдо-терминальную пару пробуя вызывать open(2) с каждым основным псевдо-терминалом, пока вызов не выполнится успешно. Затем может быть открыт соответствующий подчинённый псевдо-терминал (подставив «tty» вместо «pty» имени основного конца).

ФАЙЛЫ

/dev/ptmx
    основное клонирующее устройство UNIX 98

/dev/pts/*
    подчинённые устройства UNIX 98

/dev/pty[p-za-e][0-9a-f]
    основные устройства BSD

/dev/tty[p-za-e][0-9a-f]
    подчинённые устройства BSD

ЗАМЕЧАНИЯ
Pseudoterminals are used by applications such as network login services (ssh(1), rlogin(1), telnet(1)), terminal emulators such as xterm(1), script(1), screen(1), tmux(1), unbuffer(1), and expect(1).

Описание запроса TIOCPKT ioctl(2), который управляет пакетным режимом, можно найти в ioctl_tty(2).

Вызовы ioctl(2) для BSD TIOCSTOP, TIOCSTART, TIOCUCNTL и TIOCREMOTE не реализованы в Linux.

СМ. ТАКЖЕ
ioctl_tty(2), select(2), setsid(2), forkpty(3), openpty(3), termios(3), pts(4), tty(4)

ПЕРЕВОД
Русский перевод этой страницы руководства был сделан Alexey, Azamat Hackimov <azamat.hackimov@gmail.com>, kogamatranslator49 <r.podarov@yandex.ru>, Kogan, Max Is <ismax799@gmail.com>, 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.