Co oznaczają pty i tty?

237

Zauważyłem, że jest wiele wzmianek ptyi ttyw niektórych projektach typu open source, czy ktoś może mi powiedzieć, co one oznaczają i jaka jest między nimi różnica? Dzięki!

czemu
źródło

Odpowiedzi:

225

„tty” pierwotnie oznaczało „teletype”, a „pty” oznacza „pseudo-teletype”.

W systemie UNIX / dev / tty * jest dowolnym urządzeniem, które działa jak „typ teletekstu”, tj. Terminalem. (Nazywany teletypem, ponieważ to właśnie mieliśmy dla terminali w tych przygnębionych dniach).

Pty to pseudotty, wpis urządzenia, który działa jak terminal do odczytu i zapisu procesu, ale zarządzany jest przez coś innego. Po raz pierwszy pojawiły się (jak pamiętam) dla X Window i ekranu i tym podobnych, gdzie potrzebowałeś czegoś, co działało jak terminal, ale mogło być użyte z innego programu.

Charlie Martin
źródło
Myślę, że ptys zostały dodane do Uniksa głównie w celu obsługi Telnet, rsh i rlogin.
Fred Foo,
5
@CharlieMartin Co masz na myśli mówiąc, że pty jest czymś, co „działało jak terminal?” Dlaczego mielibyśmy chcieć czegoś takiego? I w jaki sposób inny program korzysta z tego pty? Domyślam się, że pty przekazuje polecenia lub coś do prawdziwego terminala (tty) dla programu. Czy to jest poprawne? Jeśli nie, zignoruj ​​moje przypuszczenia i odpowiedz na pierwszą część mojego komentarza.
OKGimmeMoney
16
Pomyśl o terminalu jako obiekcie: łączy on coś na jednym końcu ze stdin i stdout na drugim. Prawdziwy TTY łączy się z fizycznym terminalem. połączenie PTY z programem, np. xterm, lub okno poleceń lub okno powłoki. Następnie kłamstwa do programu i mówi, że to naprawdę jest tak terminal, rzetelny. Przed PTY łączyłeś takie programy z rurami, ale rury mają znaczące różnice, takie jak brak kontroli przepływu. Wydaje się, że PTY rozwiązują ten problem.
Charlie Martin
3
@CharlieMartin „Prawdziwy TTY łączy się z fizycznym terminalem”. Co z konsolą Linux? Na przykład w systemie Ubuntu konsole Linux są włączone Ctrl-Alt-F{1..6}i są z nimi połączone /dev/tty{1..6}. Konsola Linux nie jest fizycznym terminalem, ale jest podłączona do ttyN(nie do ptyN). Czy coś mi umyka?
Utku
1
Tyle, że właściwie nie możesz powiedzieć nic konkretnego na temat systemu LINUX, który nie miałby dziwnego przypadku. W tym przypadku konsola Linux jest funkcją jądra, która używa wpisu / dev / tty dev, ale następnie łączy się z wieloma rzeczami, aby dostać się do użytkownika. en.wikipedia.org/wiki/Linux_console
Charlie Martin
234

Tty jest terminalem (oznacza teletyp - oryginalne terminale używały drukarki liniowej do drukowania i klawiatury do wprowadzania!). Terminal to po prostu urządzenie interfejsu użytkownika, które wykorzystuje tekst do wprowadzania i wysyłania.

Pty to pseudo-terminal - to implementacja oprogramowania, która wydaje się dołączonemu programowi jak terminal, ale zamiast komunikować się bezpośrednio z „prawdziwym” terminalem, przekazuje dane wejściowe i wyjściowe do innego programu.

Na przykład, gdy wpiszesz ssh na maszynie i uruchomisz ls, lspolecenie wysyła dane wyjściowe do pseudo-terminala, którego druga strona jest podłączona do demona SSH.

caf
źródło
1
Czy możesz podać nieco bardziej „precyzyjny” przykład PTY? Nadal nie rozumiałem, skąd się biorą i jak się nawet nazywa. Dzięki
użytkownik3085931,
Czy ktoś może pomóc, kiedy i jak *nixsystem operacyjny tworzy pseudo terminale.
Krishna Oza
@darth_coder: Są tworzone, gdy aplikacja tego zażąda. Dzieje się tak, gdy robisz takie rzeczy, jak otwieranie nowego graficznego okna terminala lub zdalne logowanie.
caf
@caf może nazwać moduły jądra lub demona odpowiedzialnego za spawnowanie terminala.
Krishna Oza
@darth_coder: Każda aplikacja może to zrobić. sshdi xtermsą dwoma typowymi przykładami.
caf
21

tty: teletype. Zwykle odnosi się do portów szeregowych komputera, do którego zostały podłączone terminale.

pty: pseudoteletype. Jądro udostępniło pseudoserial port podłączony do programów emulujących terminale, takie jak xterm lub screen.

wnoise
źródło
19

Jeśli uruchomisz polecenie mount bez argumentów wiersza polecenia, które wyświetla systemy plików zamontowane w systemie, zauważysz linię wyglądającą mniej więcej tak: none on / dev / pts type devpts (rw, gid = 5, mode = 620) Wskazuje to, że specjalny typ systemu plików, devpts, jest zamontowany w / dev / pts. Ten system plików, który nie jest powiązany z żadnym urządzeniem sprzętowym, to „magiczny” system plików tworzony przez Jądro Linux. Jest podobny do systemu plików / proc

Podobnie jak katalog / dev, / dev / pts zawiera wpisy odpowiadające urządzeniom. Jednak w przeciwieństwie do / dev, który jest zwykłym katalogiem, / dev / pts to specjalny katalog tworzony dynamicznie przez jądro Linuksa. Zawartość katalogu zmienia się z czasem i odzwierciedla stan działającego systemu. Wpisy w / dev / pts odpowiadają pseudo-terminalom (lub pseudo-TTY lub PTY).

Linux tworzy kod PTY dla każdego nowego okna terminala, które otwierasz, i wyświetla odpowiedni wpis w / dev / pts. Urządzenie PTY działa jak urządzenie terminalowe - przyjmuje dane z klawiatury i wyświetla tekst z programów, które w nim działają . PTY są ponumerowane, a numer PTY to nazwa odpowiedniego wpisu w / dev / pts.

Na przykład, jeśli numer PTY nowego okna terminala to 7, wywołaj to polecenie z innego okna:% echo 'I'm a virtual di'> / dev / pts / 7 Dane wyjściowe pojawią się w nowym oknie terminala.

nikolaos_mparoutis
źródło
2

ttyJest fizyczna t erminal- t Élet Y portu PE na komputerze (zwykle z portem szeregowym).

Słowo teletype jest zwarcie maszynie telegraficznego lub dalekopisowej urządzenia z 1930 - samo urządzenie elektromagnetyczne, które zastąpiły telegraf kodujący maszyny w 1830 i 1840 roku.

Teletypewriter
TTY - Teletypewriter 1930s

ptyJest p seudo- t ele ty pe portu dostarczana przez system operacyjny komputera Kernel do łączenia programów emulujÄ terminali, takich jak ssh, xterm lub ekranu.

wprowadź opis zdjęcia tutaj
PTY - PseudoTeletype

Terminal to po prostu interfejs użytkownika komputera, który używa tekstu do wprowadzania i wysyłania.


Implementacje systemu operacyjnego

Stosują P seudo- t ele Ty PE porty jednak ich nazw i implementacje różniły się trochę.

Linux instaluje specjalny system plików devpts na / dev (the „s” prawdopodobnie stoi za s erial), które tworzy odpowiedni wpis /dev/ptsdla każdego nowego okna terminala otwarciu, np/dev/pts/0


macOS / FreeBSD również korzystają ze struktury plików / dev , jednak używają numerowanej TTYkonwencji nazewnictwa ttysdla każdego otwieranego okna terminala, np./dev/ttys002


System Microsoft Windows nadal ma koncepcję LPTportu dla terminali drukarki liniowej w swojej powłoce poleceń do wysyłania do drukarki.

Tony Barganski
źródło