stringtranslate.com

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

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

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

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

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

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

История

Псевдотерминалы присутствовали в мониторе разделения времени DEC PDP-6 по крайней мере еще в 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] Они были частью версии BSD 4.2 с довольно громоздким openpty()интерфейсом, определенным для использования. [9]

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

Книги

Интерфейс программирования Linux 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 , реализуют PTY Unix98. [11]

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

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

Рекомендации

  1. ^ abc «Псевдотерминальные файлы». www.ibm.com . 12 февраля 2016 г. Проверено 30 сентября 2021 г.
  2. ^ «Глава 64: Псевдотерминалы — Интерфейс программирования Linux [Книга]» . www.oreilly.com . Проверено 30 сентября 2021 г.
  3. ^ abc Керриск, Майкл (2010). Интерфейс программирования Linux: справочник по системному программированию Linux и UNIX. Сан-Франциско: Пресса без крахмала. ISBN 978-1-59327-291-3. ОСЛК  728672600.
  4. ^ «pty(7) — страница руководства Linux» . man7.org . Проверено 30 сентября 2021 г.
  5. ^ posix_openpt  - Справочник по системным интерфейсам, Единая спецификация UNIX , версия 4 от Открытой группы.
  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 - Специальные файлы

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