Что такое псевдо-терминалы (pty / tty)?

92

Это может быть очень простой вопрос, но я хочу понять его полностью.

  1. Что такое псевдо-терминал? (Терминал / PTY)
  2. Зачем они нам нужны? Как они познакомились и зачем это нужно?
  3. Они устарели? Разве они нам больше не нужны? Есть ли что-нибудь, что заменило их?
  4. Любой полезный вариант использования?

Что я сделал:

  1. Читайте справочные страницы - получили некоторую информацию, но не точную картину.
  2. Пытался читать по ним из Unix Network Programming Ричарда Стивенса. Есть некоторая информация, но не why?часть.
хари
источник
Я тоже так думаю, особенно если здесь не возникает никаких особых проблем, таких как openpty / forkpty.
Попытка пометить его для миграции, но Linux / Unix не является допустимой целью миграции. Пытаясь спуститься по градиенту, Super User уже немного лучше, чем этот сайт, и, возможно, они смогут направить его на еще лучший сайт.
7
Это довольно хороший обзор: linusakesson.net/programming/tty/index.php
nos
@nos: вау! Вот отличная ссылка. То, что я искал. Спасибо огромное :)
Хари
Может быть полезна глава 62 и глава 64 интерфейса программирования Linux
zjk

Ответы:

42
  1. Устройство, которое имеет функции физического терминала, но не является таковым. Создано с помощью эмуляторов терминала, таких как xterm. Более подробно в справочной странице pty (7).
  2. Традиционно UNIX имеет концепцию управляющего терминала для группы процессов, и многие функции ввода / вывода создаются с учетом терминалов. Псевдотерминалы обрабатывают, например, некоторые управляющие символы, такие как ^ C.
  3. Они не устарели и используются во многих программах, включая ssh.
  4. SSH.
thiton
источник
1
Спасибо @thiton. Не могли бы вы рассказать о вашем примере ssh? Как он использует pty / tty? Какова роль хозяина / раба ssh?
Хари
3
ssh выделяет pty для оболочки, которую он создает. Оболочка подключена к ведомому концу и, таким образом, может полагаться на все возможности обычного терминала (например, termcap, если я правильно помню), а демон ssh подключается к главному концу и отправляет и получает свой ввод там.
27

Ответ в названии - «Псевдо», что означает «не подлинный, но имеющий вид».

С первыми терминалами всегда было какое-то оборудование, подключенное к соответствующему устройству, будь то оборудование для отображения или последовательный порт.

С xwindows, telnet и ssh возникла необходимость в программном обеспечении «псевдоустройства», которое могло бы заменить аппаратное обеспечение дисплея. Это «псевдо-терминалы» ... программное обеспечение, которое эмулирует аппаратное обеспечение терминала, обрабатывая ввод и вывод так же, как физическое устройство, так что подключенное программное обеспечение не знает, что к нему не подключено реальное устройство.

GView
источник
Поскольку сейчас у нас много приложений, которым требуется доступ к одному и тому же оборудованию, каждое приложение использует оборудование через «псевдо» терминал?
Хари
Я немного расширил ответ - надеюсь, он прояснится.
Нет, просто у нас больше нет такого оборудования. xterm эмулирует классический терминал, вот и все.
@thiton: Когда вы говорите emulates, это часть программного обеспечения, не так ли?
Хари
1
Таким образом, использование слова «терминал» в контексте UNIX сегодня на самом деле неправильно? Потому что все это «псевдо-терминал»?
А.
11

Псевдо-терминалы являются эмуляторами для последовательных линий. Они предоставляют конечные точки для оболочек telnet, ssh и xterm.

Джошуа
источник
2
И они древние реликвии ( на самом деле, раковины / текстовые приложения по - прежнему взаимодействует через устройство , которое эмулирует тело типа писатель через последовательную линию , как они работали 40 лет назад ...) Мы все еще нуждаемся в них , потому что нет никакой замены: - (
Ну, если вы рассматриваете терминал, я не думаю, что вам нужно намного больше, чем поток писем, приходящих и отправляющихся ...
Диего Севилья
4
@Diego Sevilla Первоначальный изобретатель Unix покончил с tty / ptys в Plan 9, и там терминал практически просто использует поток входных / выходных данных. Но в * nix ttys все еще существуют и используются консолями и эмуляторами терминалов, например, для управления размером терминала, управления потоком, буферизацией линии, событиями специальных клавиш и другими вещами.
Нос
4
@nos: Оказывается, это не древние реликвии, в которые мы верим. Попытка обойтись без них в Windows довольно болезненна в конце. Использование удаленного взаимодействия powershell затрудняется одной вещью: интерактивные консольные программы не работают и не могут быть исправлены для правильной работы. Там нет возможности разумного текстового редактора, такого как DOS EDIT или vi.
Джошуа
2
@Joshua Еще одним доказательством обратного является то, что первоначальные дизайнеры Unix создали ОС Plan 9, где они полностью покончили с ttys, но в то же время достигли удаленного взаимодействия (и многих других) просто отлично.
Нос