stringtranslate.com

Псевдотерминал

Псевдотерминалы, используемые scriptкомандой Unix, которая записывает ввод пользователя для его последующего воспроизведения.

В некоторых операционных системах , включая Unix-подобные системы, псевдотерминал , псевдотерминал или PTY представляет собой пару конечных точек псевдоустройств (файлов), которые устанавливают асинхронный двунаправленный канал связи ( IPC ) (с двумя портами) между двумя или более процессами. [1] [2] [3]

Одно псевдоустройство в паре, master , предоставляет средства, с помощью которых эмулятор терминала или удаленный сервер входа (например, сервер Telnet , rlogin или Secure Shell ) [3] управляет подчиненным процессом . Другое псевдоустройство, slave , эмулирует аппаратное устройство последовательного порта [1] и используется программами, ориентированными на терминал, такими как оболочки (например, bash ), в качестве процессов для чтения/записи данных обратно с/на главную конечную точку. [1] PTY похожи на двунаправленные каналы. [3] : 1388 

Devpts — это виртуальная файловая система ядра Linux, содержащая псевдотерминальные устройства.

Реализация Linux основана на терминалах в стиле System V (обычно называемых псевдотерминалами UNIX 98) [4] и предоставляет POSIX и API единой спецификации Unix в форме функции posix_openpt() с 1998 года. [5]

История

Псевдотерминалы присутствовали в мониторе DEC PDP-6 Timesharing Monitor по крайней мере еще в 1967 году и использовались для реализации пакетной обработки. Они описаны в документации для последующего TOPS-10 на PDP-10 . [6] Другие операционные системы DEC также имели PTY, включая RSTS/E для PDP-11 , как и сторонняя операционная система TENEX для PDP-10.

Реализации псевдотерминалов Unix восходят к модификациям, которые RAND и BBN внесли в 6-е издание в конце 1970-х годов для поддержки удаленного доступа по сети. [7] Современные псевдотерминалы Unix возникли в 1983 году во время разработки восьмого издания Unix и были основаны на аналогичной функции в TENEX. [8] Они были частью выпуска 4.2 BSD с довольно громоздким openpty()интерфейсом, определенным для использования. [9]

System V от AT&T включала поддержку псевдотерминалов в качестве драйвера в своей модели устройства STREAMS , а также псевдотерминальный мультиплексор ( /dev/ptmx ). Позже это развилось в стиль PTY в Unix98.

Книги

Linux Programming Interface от 2010 года содержит целую главу (глава 64 "Псевдотерминалы" стр. 1375–1399.) с объяснением псевдотерминалов. Затем есть еще одна глава, Глава 62 "Терминалы", посвященная терминалам.

В 2018 году консоль Windows была расширена и получила интерфейс PTY под названием ConPTY. [10]

Приложения

Роль процесса эмулятора терминала:

Процесс эмулятора терминала также должен обрабатывать команды управления терминалом, например, для изменения размера экрана. Широко используемые программы эмулятора терминала включают xterm , GNOME Terminal , Konsole и Terminal .

Удаленные серверы входа, такие как серверы Secure Shell и Telnet, играют ту же роль, но взаимодействуют с удаленным пользователем, а не с локальным.

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 , реализуют Unix98 PTY. [11]

BSD PTY были вытеснены Unix98 pty, чья система именования не ограничивает количество псевдотерминалов и доступ к которым происходит без опасности возникновения состояний гонки. /dev/ptmxявляется «мультиплексором главного псевдотерминала». Его открытие возвращает файловый дескриптор главного узла и приводит к созданию связанного подчиненного узла. [12]/dev/pts/N

Смотрите также

Ссылки

  1. ^ abc "Псевдотерминальные файлы". www.ibm.com . 2016-02-12 . Получено 2021-09-30 .
  2. ^ "Глава 64: Псевдотерминалы - Интерфейс программирования Linux [Книга]". www.oreilly.com . Получено 2021-09-30 .
  3. ^ abc Керриск, Майкл (2010). Интерфейс программирования Linux: руководство по программированию систем Linux и UNIX. Сан-Франциско: No Starch Press. ISBN 978-1-59327-291-3. OCLC  728672600.
  4. ^ "pty(7) - страница руководства Linux". man7.org . Получено 2021-09-30 .
  5. ^ posix_openpt  – Справочник по системным интерфейсам, Единая спецификация UNIX , версия 4 от The Open Group
  6. ^ Справочное руководство программиста мониторов с разделением времени PDP-10, раздел 5.10
  7. ^ ``Драйвер PTY для SRI-NOSC Net UNIX строки 15-31
  8. ^ Ритчи, ДМ " Система потокового ввода-вывода ". Технический журнал AT&T Bell Laboratories . 63 (8): 1897–1910. CiteSeerX 10.1.1.48.3730 . doi :10.1002/j.1538-7305.1984.tb00071.x. S2CID  33497669. 
  9. ^ openpty(3)  –  Руководство по функциям библиотеки FreeBSD
  10. ^ "Введение в псевдоконсоль Windows (ConPTY)". Командная строка Windows DevBolgs . 3 августа 2018 г.
  11. ^ pty(4)  –  Руководство по интерфейсам ядра FreeBSD
  12. ^ pts(4)  –  Руководство программиста Linux – Специальные файлы

Внешние ссылки