Из Википедии, бесплатной энциклопедии
  (Перенаправлено с псевдотерминала )
Перейти к навигации Перейти к поиску
Псевдотерминалы в том виде, в каком они используются script

В некоторых операционных системах , включая 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

Ссылки [ править ]

  1. ^ posix_openpt  - Справочник по системным интерфейсам, Единая спецификация UNIX , выпуск 7 от The Open Group
  2. ^ "Группы Google" . groups.google.com .
  3. ^ Справочное руководство программиста мониторов с разделением времени PDP-10, раздел 5.10
  4. ^ Ричи, DM " Потоковая система ввода-вывода ". Технический журнал AT&T Bell Laboratories . 63 (8): 1897–1910. CiteSeerX 10.1.1.48.3730 . 
  5. ^ openpty(3)  -  Руководство по функциям библиотеки FreeBSD
  6. ^ «Представляем псевдоконсоль Windows (ConPTY)» . DevBolgs из командной строки Windows . 3 августа 2018.
  7. ^ pty(4)  -  Руководство по интерфейсам ядра FreeBSD
  8. ^ pts(4)  -  Руководство программиста Linux - Специальные файлы

Внешние ссылки [ править ]

  • Контейнеры, псевдотайты и обратная совместимость , LWN.net , 1 июня 2016 г., Нил Браун.