Co to są pseudo terminale (pty / tty)?

92

To może być naprawdę podstawowe pytanie, ale chcę je dokładnie zrozumieć.

  1. Co to jest pseudo terminal? (tty / pty)
  2. Dlaczego ich potrzebujemy? Jak zostali wprowadzeni i jaka była tego potrzeba?
  3. Czy są przestarzałe? Czy już ich nie potrzebujemy? Czy coś je zastąpiło?
  4. Jakiś użyteczny przypadek użycia?

Co ja zrobiłem:

  1. Czytaj strony podręcznika - mam trochę informacji, ale nie dokładny obraz.
  2. Próbowałem przeczytać o nich z Unix Network Programming autorstwa Richarda Stevensa. Mam trochę informacji, ale nie tę why?część.
hari
źródło
Też tak myślę, zwłaszcza jeśli nie pojawiają się tutaj żadne wyspecjalizowane problemy, takie jak openpty / forkpty.
Próbowałem oflagować go do migracji, ale Linux / Unix nie jest prawidłowym celem migracji. Próbując zejścia gradientowego, Super User jest już nieco lepszym celem niż ta strona i być może może skierować ją na jeszcze lepszą stronę.
7
To całkiem niezły przegląd: linusakesson.net/programming/tty/index.php
nos
@nos: wow! To niesamowity link. To, czego szukałem. Dzięki tona :)
hari
Pomocny

Odpowiedzi:

42
  1. Urządzenie, które ma funkcje fizycznego terminala, ale nie jest nim. Tworzone przez emulatory terminali, takie jak xterm. Więcej szczegółów znajduje się na stronie man page (7).
  2. Tradycyjnie UNIX ma koncepcję terminala sterującego dla grupy procesów, a wiele funkcji We / Wy budowanych jest z myślą o terminalach. Pseudoterminy obsługują na przykład niektóre znaki sterujące, takie jak ^ C.
  3. Nie są przestarzałe i są używane w wielu programach, w tym w ssh.
  4. ssh.
Thiton
źródło
1
Dzięki @thiton. Czy możesz rozwinąć swój przykład ssh? Jak używa pty / tty? Jak gra rola master / slave ssh?
hari
3
ssh przydziela pty dla tworzonej powłoki. Powłoka jest podłączona do końca slave, a tym samym może polegać na wszystkich możliwościach normalnego terminala (np. Termcap, jeśli dobrze pamiętam), a demon ssh łączy się z końcem master i wysyła tam i odbiera dane wejściowe.
27

Odpowiedź brzmi: „Pseudo” oznacza „nie jest autentyczny, ale ma wygląd”.

W przypadku pierwszych terminali zawsze znajdował się sprzęt podłączony do powiązanego urządzenia, czy to sprzętu wyświetlającego, czy portu szeregowego.

Wraz z xwindows, telnet i ssh pojawiło się zapotrzebowanie na oprogramowanie „Pseudo urządzenia”, które spełniłoby rolę stojącego za sprzętem wyświetlającym. Są to oprogramowanie „Pseudo Terminals” ... emulujące sprzęt terminala, obsługujące dane wejściowe i wyjściowe w taki sam sposób, jak urządzenie fizyczne, tak aby podłączone oprogramowanie nie wiedziało, że nie jest podłączone żadne prawdziwe urządzenie.

gview
źródło
Ponieważ teraz mamy wiele aplikacji, które muszą uzyskać dostęp do tego samego sprzętu, każda aplikacja korzysta ze sprzętu przez terminal „pseudo”?
hari
Rozszerzyłem nieco odpowiedź - mam nadzieję, że to wyjaśni.
Nie, po prostu nie mamy już takiego sprzętu. xterm emuluje klasyczny terminal, to wszystko.
@thiton: Kiedy mówisz emulates, że to część oprogramowania, prawda?
hari
1
Więc używanie słowa „terminal” w kontekście systemu UNIX jest w rzeczywistości błędne? Ponieważ wszystko jest „pseudo-terminalem”?
A. Sallai
11

Pseudo-terminale są emulatorami dla linii szeregowych. Zapewniają punkty końcowe dla powłok telnet, ssh i xterm.

Jozuego
źródło
2
I to starożytne relikwie (naprawdę, powłoki / aplikacje tekstowe nadal działają na urządzeniu, które emuluje pisarz typu tele przez linię szeregową, tak jak działały 40 lat temu ...) Nadal ich potrzebujemy, ponieważ nie ma zamiany: - (
nos
Cóż, jeśli weźmiesz pod uwagę terminal, nie sądzę, że potrzebujesz czegoś więcej niż strumienia listów przychodzących i wychodzących ...
Diego Sevilla,
4
@Diego Sevilla Oryginalny wynalazca unixów pozbył się tty / ptys w Planie 9, a tam terminal prawie używa tylko strumienia danych wejściowych / wyjściowych. Ale w * nix tty są nadal dostępne i używane przez konsole i emulatory terminali do np. Kontroli wielkości terminala, kontroli przepływu, buforowania linii, specjalnych zdarzeń kluczowych i innych rzeczy.
nos
4
@nos: Okazuje się, że nie są to starożytne relikwie, w które wierzymy. W końcu próba obejścia się bez nich w systemie Windows jest dość bolesna. Korzystanie z usługi PowerShell jest utrudnione przez jedno: interaktywne programy konsoli nie działają i nie można ich naprawić tak, aby działały prawidłowo. Nie ma możliwości rozsądnego edytora tekstu, takiego jak DOS EDIT lub vi.
Joshua
2
@Joshua Innym dowodem przeciwnym jest to, że oryginalni projektanci Unixa stworzyli system operacyjny Plan 9, w którym całkowicie zlikwidowali tty, ale zdalnie zdołali w ten sposób (i wiele więcej) dobrze.
nos