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


92

Це може бути справді основним питанням, але я хочу його глибоко зрозуміти.

  1. Що таке псевдотермінал? (tty / pty)
  2. Навіщо вони нам потрібні? Як вони познайомились і в чому полягала потреба?
  3. Вони застаріли? Хіба вони нам більше не потрібні? Чи є щось, що їх замінило?
  4. Будь-який корисний випадок використання?

Що я зробив:

  1. Прочитайте сторінки чоловіків - отримайте трохи інформації, але не точну картину.
  2. Намагався читати про них з Мережевого програмування Unix Річарда Стівенса. Отримав інформацію, але не why?частину.

Я теж думаю, що особливо, якщо тут не виникає жодних спеціалізованих питань, таких як openpty / forkpty.

Намагався позначити його для міграції, але Linux / Unix не є дійсною міграцією міграції. Спробуючи спуск градієнта, Super User вже трохи краща ціль, ніж цей сайт, і, можливо, вони можуть перенаправити його на ще кращий сайт.

7
Це досить хороший огляд: linusakesson.net/programming/tty/index.php
NOS

@nos: вау! Це дивовижне посилання. Те, що я шукав. Дякую тонну :)
Харі

Глава 62 та Глава 64 інтерфейсу програмування Linux можуть бути корисними
zkk

Відповіді:


42
  1. Пристрій, який має функції фізичного терміналу, але насправді його немає. Створено термінальними емуляторами, такими як xterm. Більш докладно в статті manty pty (7).
  2. Традиційно, UNIX має концепцію керуючого терміналу для групи процесів, і багато функцій вводу / виводу будуються з урахуванням терміналів. Псевдотермінали обробляють, наприклад, деякі контрольні символи, такі як ^ C.
  3. Вони не застаріли і використовуються в багатьох програмах, включаючи ssh.
  4. ssh.

1
Дякую @thiton Чи можете ви, будь ласка, детальніше розповісти на своєму прикладі ssh? Як воно використовує pty / tty? Як грає роль господар / раб ssh?
Харі

3
ssh виділяє pty для створеної оболонки. Оболонка з'єднана з веденим кінцем і тим самим може розраховувати на всі можливості нормального терміналу (наприклад, термічну капку, якщо я правильно пам’ятаю), і демон ssh підключається до головного кінця і надсилає і отримує там свій вхід.

27

Відповідь у назві - "Псевдо" означає "не справжнє, але має вигляд".

З першими терміналами завжди було обладнання, прикріплене до пов'язаного пристрою, будь то обладнання для відображення або послідовний порт.

За допомогою xwindows, telnet та ssh виникла потреба у програмному забезпеченні "Псевдопристрої", щоб виконати роботу з обладнанням для дисплея. Вони є "псевдотерміналами" ... програмне забезпечення, яке імітує апаратне забезпечення терміналів, обробляючи вхід та вихід так само, як і фізичний пристрій, так що програмне забезпечення, що підключено, не знає, що немає реального пристрою.


Оскільки зараз у нас є багато додатків, яким потрібно отримати доступ до одного обладнання, кожен додаток використовує обладнання через термінал "псевдо"?
Харі

Я трохи розширив відповідь - сподіваюся, що це уточнення.

Ні, ми просто фактично не маємо такого обладнання. xterm імітує класичний термінал, ось і все.

@thiton: Коли ви говорите emulates, це програмна частина, чи не так?
Харі

1
Тож використання слова "термінал" в контексті UNIX сьогодні насправді неправильне? Тому що все - «псевдотермінал»?
А. Саллай

11

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


2
І вони стародавні реліквії (справді, оболонки / текстові програми все ще взаємодіють на пристрої, який імітує запис телевізора за серійною лінією, як вони працювали 40 років тому ...) Нам вони все ще потрібні, оскільки заміни немає: - (
нос

Ну, якщо ви розглядаєте термінал, я не думаю, що вам потрібно набагато більше, ніж потік листів, що надходять і надходять ...
Дієго Севілья

4
@Diego Sevilla Оригінальний винахідник Unix покінчив із tty / ptys у Плані 9, і там термінал в значній мірі просто використовує потік даних вводу / виводу. Але в * nix, ttys все ще існують і використовуються консолями та емуляторами терміналів, наприклад, для розміру терміналу управління, керування потоком, буферизації ліній, спеціальних ключових подій та іншого.
нос

4
@nos: Виявляється, це не стародавні реліквії, до яких ми віримо. Намагатися обійтися без них у Windows, врешті-решт, досить болісно. Використання видалення оболонок перешкод перешкоджає одному: інтерактивні програми консолі не працюють і не можуть бути налаштовані на правильну роботу. Немає можливості такого розумного редактора тексту, як DOS EDIT або vi.
Джошуа

2
@Joshua Ще одним свідченням протилежного є те, що оригінальні дизайнери Unix створили ОС Plan 9, де вони повністю покінчили з ttys, але вони домоглися видалення таким чином (і багато іншого) просто чудово.
NOS
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.