Jump to content

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

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

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

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

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

Приложения

[ редактировать ]

Роль процесса эмулятора терминала заключается в следующем:

  • для взаимодействия с пользователем,
  • для подачи текстового ввода на главное псевдоустройство для использования оболочкой (например, bash), которая подключена к подчиненному псевдоустройству,
  • для чтения текстового вывода с главного псевдоустройства и показа его пользователю.

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

Серверы удаленного входа, такие как серверы 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 это «главный мультиплексор псевдотерминала». Его открытие возвращает файловый дескриптор главного узла и вызывает связанный с ним подчиненный узел. /dev/pts/N быть созданным. [12]

См. также

[ редактировать ]
  1. ^ Jump up to: а б с «Псевдотерминальные файлы» . www.ibm.com . 12 февраля 2016 г. Проверено 30 сентября 2021 г.
  2. ^ «Глава 64: Псевдотерминалы — Интерфейс программирования Linux [Книга]» . www.oreilly.com . Проверено 30 сентября 2021 г.
  3. ^ Jump up to: а б с Керриск, Майкл (2010). Интерфейс программирования Linux: руководство по системному программированию Linux и UNIX . Сан-Франциско: Пресса без крахмала. ISBN  978-1-59327-291-3 . OCLC   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 . дои : 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 программиста Руководство – Специальные файлы
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1fc3995a49ff6a50726c0fc85267a59e__1721808840
URL1:https://arc.ask3.ru/arc/aa/1f/9e/1fc3995a49ff6a50726c0fc85267a59e.html
Заголовок, (Title) документа по адресу, URL1:
Pseudoterminal - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)