В некоторых операционных системах , включая Unix , псевдотерминал , псевдотерминал или PTY представляет собой пару псевдоустройств , одно из которых, подчиненное устройство , эмулирует аппаратное текстовое терминальное устройство, а другое, ведущее устройство , предоставляет средства, с помощью которых процесс эмулятора терминала управляет подчиненным устройством.
Функция PTY является частью POSIX и Single Unix Specification в форме функции posix_openpt () с 1998 года. [1]
История [ править ]
Псевдотерминалы присутствовали в мониторе разделения времени DEC PDP-6 по крайней мере еще в 1967 году и использовались для реализации пакетной обработки. [2] [ ненадежный источник? ] Они описаны в документации для последующих TOPS-10 на PDP-10 . [3] Другие операционные системы DEC также имели PTY, включая RSTS / E для PDP-11 , как и сторонняя операционная система TENEX для PDP-10.
Псевдотерминалы Unix возникли в 1983 году во время разработки Eighth Edition Unix и были основаны на аналогичной функции TENEX. [4] Они были частью версии BSD 4.2 с довольно громоздким openpty()
интерфейсом, определенным для использования. [5]
System V от AT&T включала поддержку псевдотерминалов в качестве драйвера в их модель устройства STREAMS вместе с псевдотерминальным мультиплексором ( / dev / ptmx ). Позже это превратилось в стиль PTY в Unix98.
Интерфейс программирования Linux от 2010 года содержит целую главу (глава 64 «Псевдотерминалы», стр. 1375–1399.), Объясняющую псевдотерминалы. Затем есть еще одна глава 62 «Терминалы», посвященная терминалам.
В 2018 году консоль Windows была расширена за счет интерфейса PTY под названием ConPTY [6].
Приложения [ править ]
Роль процесса эмулятора терминала:
- взаимодействовать с пользователем,
- для подачи вводимого текста в главное псевдоустройство для использования оболочкой (например, bash), которая подключена к подчиненному псевдоустройству,
- чтобы прочитать текстовый вывод с главного псевдоустройства и показать его пользователю.
Процесс эмулятора терминала также должен обрабатывать команды управления терминалом, например, для изменения размера экрана. К широко используемым программам-эмуляторам терминала относятся xterm , GNOME Terminal , Konsole и Terminal (macOS) . Обработчики удаленного входа в систему, такие как серверы ssh и telnet, играют ту же роль, но взаимодействуют с удаленным пользователем, а не с локальным. Также рассмотрите такие программы, как expect .
Screen и Tmux используются для добавления контекста сеанса к псевдотерминалу, что делает решение гораздо более надежным и универсальным. Например, каждый из них обеспечивает постоянство терминала, позволяя пользователю отключиться от одного компьютера, а затем подключиться позже с другого компьютера.
Варианты [ править ]
В системе BSD PTY файл ведомого устройства, который обычно имеет имя формы /dev/tty[p-za-e][0-9a-f]
, поддерживает все системные вызовы, применимые к устройствам текстового терминала. Таким образом, он поддерживает сеансы входа в систему . Файл главного устройства, который обычно имеет имя формы /dev/pty[p-za-e][0-9a-f]
, является конечной точкой для связи с эмулятором терминала. При такой [p-za-e]
схеме именования может быть не более 256 пар tty. Кроме того, поиск первого свободного pty-мастера может быть быстрым, если не будет принята схема блокировки. По этой причине в последних операционных системах BSD, таких как FreeBSD , реализованы PTY Unix98. [7]
BSD PTY были признаны устаревшими из-за системы имен Unix98, чья система именования не ограничивает количество псевдотерминалов и доступ к которым происходит без опасности возникновения состояния гонки. /dev/ptmx
- это «главный мультиплексор псевдотерминала». Его открытие возвращает файловый дескриптор главного узла и вызывает создание ассоциированного подчиненного узла . [8]/dev/pts/N
Ссылки [ править ]
- ^ - Справочник по системным интерфейсам, Единая спецификация UNIX , выпуск 7 от The Open Group
- ^ "Группы Google" . groups.google.com .
- ^ Справочное руководство программиста мониторов с разделением времени PDP-10, раздел 5.10
- ^ Ричи, DM " Потоковая система ввода-вывода ". Технический журнал AT&T Bell Laboratories . 63 (8): 1897–1910. CiteSeerX 10.1.1.48.3730 .
- ^ - Руководство по функциям библиотеки FreeBSD
- ^ «Представляем псевдоконсоль Windows (ConPTY)» . DevBolgs из командной строки Windows . 3 августа 2018.
- ^ - Руководство по интерфейсам ядра FreeBSD
- ^ - Руководство программиста Linux - Специальные файлы
Внешние ссылки [ править ]
- Контейнеры, псевдотайты и обратная совместимость , LWN.net , 1 июня 2016 г., Нил Браун.