Що означають pty та tty?


237

Я помітив, що є багато згадок про те, ptyі ttyв деяких проектах з відкритими ресурсами хтось може мені сказати, що вони означають, і яка різниця між ними? Дякую!

Відповіді:


225

"tty" спочатку означало "телетайп", а "pty" означає "псевдотелетип".

У UNIX / dev / tty * - це будь-який пристрій, який діє як "телетайп", тобто термінал. (Називається телетипією, тому що саме у нас були термінали в ті доброзичливі дні.)

Pty - це псевдотти, запис пристрою, який діє як термінал для процесу читання та запису, але керується чимось іншим. Вони вперше з'явилися (наскільки я пам’ятаю) для X Window та екрана тощо, де вам потрібно щось, що діяло як термінал, але можна було б використовувати з іншої програми.


Я думаю, що ptys, де додано в Unix насамперед для підтримки Telnet, rsh та rlogin.
Фред Фоо

5
@CharlieMartin Що ти маєш на увазі, що pty - це щось ", що діяло як термінал?" Чому б ми хотіли чогось такого? І як інша програма використовує цей pty? Я здогадуюсь, що pty ретранслює команди або щось до справжнього терміналу (tty) для програми. Це правильно? Якщо ні, ігноруйте мої здогадки і будь ласка, відповідайте на першу частину мого коментаря.
OKGimmeMoney

16
Подумайте про термінал як про об'єкт: він з'єднує щось з одного кінця на stdin та stdout з іншого. Справжній TTY підключається до фізичного терміналу. з'єднання PTY до програми, наприклад, xterm, командного вікна або вікна оболонки. Потім він бреше програмі і каже, що це справді так термінально, чесно. До PTY ви з'єднували подібні програми з трубами, але труби мають суттєві відмінності, як відсутність контролю потоку. З'явилися PTY, щоб вирішити це.
Чарлі Мартін

3
@CharlieMartin "Справжній TTY підключається до фізичного терміналу". А як щодо консолі Linux? Наприклад, в системі Ubuntu встановлені консолі Linux, до яких Ctrl-Alt-F{1..6}вони підключені /dev/tty{1..6}. Консоль Linux не є фізичним терміналом, але він підключений до ttyN(не до a ptyN). Я щось тут пропускаю?
Утку

1
Тільки що ви майже нічого не можете сказати про LINUX, що не матиме дивного краю краю. У цьому випадку консоль Linux - це функція ядра, яка використовує / dev / tty dev запис, але потім підключається до купи речей, щоб вийти з користувачем. en.wikipedia.org/wiki/Linux_console
Чарлі Мартін

234

Tty - це термінал (він означає телетайп - в оригінальних терміналах використовувався лінійний принтер для виводу та клавіатура для введення!). Термінал - це в основному просто пристрій інтерфейсу користувача, який використовує текст для введення та виводу.

Pty - це псевдотермінал - це програмне забезпечення, яке з'являється в доданій програмі, як термінал, але замість того, щоб безпосередньо спілкуватися з "реальним" терміналом, він передає вхід і вихід іншій програмі.

Наприклад, коли ви впадаєте в машину і запускаєте ls, lsкоманда надсилає свій вихід на псевдотермінал, інша сторона якого приєднана до демона SSH.


1
Не могли б ви дати трохи більш "точний" приклад PTY? Я досі не розумів, куди вони заходять, і як їх навіть називають. Дякую
користувач3085931

Хтось може допомогти, коли і як *nixна базі операційної системи створюється цей псевдотермінал.
Крішна Оза

@darth_coder: Вони створюються, коли програма вимагає її. Це трапляється, коли ви робите такі речі, як відкриття нового вікна графічного терміналу або вхід у систему віддалено.
caf

@caf Ви можете назвати модулі ядра або демона, відповідального за нерест терміналу.
Кришна Оза

@darth_coder: Будь-яка програма може це зробити. sshdі xtermє двома типовими прикладами.
caf

21

tty: телетайп. Зазвичай відноситься до послідовних портів комп'ютера, до яких були приєднані термінали.

pty: псевдотелетип. Kernel забезпечив псевдосеріальний порт, підключений до програм, що емулюють термінали, такі як xterm або screen.


19

Якщо ви запустите команду mount без аргументів командного рядка, яка відображає файлові системи, встановлені у вашій системі, ви помітите рядок, який виглядає приблизно так: жоден на / dev / pts не вводить devpts (rw, gid = 5, режим = 620) Це вказує на те, що спеціальний тип файлової системи, devpts, встановлений у / dev / pts. Ця файлова система, яка не пов'язана з жодним апаратним пристроєм, є "магічною" файловою системою, яку створює Linux ядро. Це схоже на файлову систему / proc

Як і / dev каталог, / dev / pts містить записи, відповідні пристроям. Але на відміну від / dev, що є звичайним каталогом, / dev / pts - це спеціальний каталог, який динамічно створюється ядром Linux. Вміст каталогу залежить від часу та відображає стан запущеної системи. Записи в / dev / pts відповідають псевдотерміналам (або псевдо-TTY, або PTY).

Linux створює PTY для кожного нового вікна терміналу, яке ви відкриваєте, і відображає відповідний запис у / dev / pts. Пристрій PTY діє як термінальний пристрій - він приймає введення з клавіатури та відображає текстовий вихід із програм, що працюють у ньому . Номер PTY пронумерований, а номер PTY - це ім'я відповідного запису в / dev / pts.

Наприклад, якщо номер PTY нового вікна терміналу - 7, викликайте цю команду з іншого вікна:% echo 'I am virtual di'> / dev / pts / 7 Вихід з'являється у новому вікні терміналу.


2

ttyЄ фізичною т erminal- т Елета у ре порту на комп'ютері ( як правило, послідовний порт).

Слово телетип - це короткий короткий друк телеграфної машинки або пристрою телерайт- машинок 30-х років минулого століття - сам електромагнітний прилад, який замінив машини для кодування телеграфа 1830-х та 1840-х років.

Телетайпер
TTY - Телетайпер 1930-х років

ptyЄ р seudo- т Еля ти ре порту забезпечується комп'ютером ядра операційної системи для підключення програм емуляції терміналів, таких як SSH, XTerm, або екран.

введіть тут опис зображення
PTY - Псевдотелетип

Термінал - це просто користувальницький інтерфейс комп'ютера, який використовує текст для введення та виводу.


Впровадження ОС

Вони використовують р seudo- т Ель ти ре портів , проте їх імена і реалізації відхилилися трохи.

Linux монтує спеціальну файлову систему devpts on / dev (імовірно, 's' - це s erial), яка створює відповідний запис /dev/ptsдля кожного нового відкритого вікна терміналу, наприклад/dev/pts/0


macOS / FreeBSD також використовує структуру файлів / dev, однак вони використовують нумеровану TTYконвенцію ttysпро іменування для кожного нового вікна терміналу, яке ви відкриєте, наприклад/dev/ttys002


Microsoft Windows все ще має концепцію LPTпорту для лінійних принтерних терміналів в межах своєї командної оболонки для виведення на принтер.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.