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

Псевдотерминалы, как они используются сценарий

В некоторых операционные системы, включая Unix, а псевдотерминал, псевдотонка, или же PTY пара псевдоустройства, один из которых раб, эмулирует оборудование текстовый терминал устройство, другое из которых, владелец, предоставляет средства, с помощью которых эмулятор терминала процесс управляет рабом.

Функция PTY является частью POSIX и Единая спецификация Unix в виде posix_openpt () функционирует с 1998 года.[1]

История

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

Псевдотерминалы Unix возникли в 1983 году во время разработки Восьмое издание Unix и были основаны на аналогичной функции в Техасе.[4] Они были частью версии 4.2 BSD, с довольно громоздким openpty () интерфейс, определенный для использования.[5]

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

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

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

Приложения

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

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

Процесс эмулятора терминала также должен обрабатывать команды управления терминалом, например, для изменения размера экрана. Широко используемые программы-эмуляторы терминала включают: xterm, Терминал GNOME, Konsole, и Терминал (macOS). Обработчики удаленного входа, такие как ssh и телнет серверы играют ту же роль, но общаются с удаленным пользователем, а не с локальным. Также рассмотрите такие программы, как ожидать.

Экран и Tmux используются для добавления контекста сеанса к псевдотерминалу, что делает решение гораздо более надежным и универсальным. Например, каждый из них обеспечивает постоянство терминала, позволяя пользователю отключиться от одного компьютера, а затем подключиться позже с другого компьютера.


Варианты

в BSD Система PTY, файл ведомого устройства, имя которого обычно имеет вид / dev / tty [p-za-e] [0-9a-f], поддерживает все системные вызовы применимо к устройствам с текстовым терминалом. Таким образом, он поддерживает сеансы входа в систему. Главный файл устройства, имя которого обычно имеет вид / dev / pty [p-za-e] [0-9a-f], является конечной точкой для связи с эмулятором терминала. С этим [п-за-э] схема именования, может быть не более 256 пар tty. Кроме того, поиск первого бесплатного мастера pty может быть колоритный если не принята схема блокировки. По этой причине последние операционные системы BSD, такие как FreeBSD, реализуйте Unix98 PTY.[7]

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

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

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

внешняя ссылка