Pseudoterminal
W niektórych systemach operacyjnych , w tym Unix i Linux , pseudoterminal , pseudotty lub PTY to para pseudo-urządzeń końcowych (plików), które ustanawiają asynchroniczny, dwukierunkowy kanał komunikacyjny ( IPC ) (z dwoma portami) między dwoma lub więcej procesami. Urządzenie nadrzędne zapewnia środki, za pomocą których proces emulatora terminala steruje urządzeniem podrzędnym. Slave emuluje sprzęt tekstowe urządzenie końcowe . PTY są podobne do rur dwukierunkowych.
Pliki główne są zwykle używane przez aplikacje sieciowe (np. rlogin ), a pliki podrzędne są używane przez programy zorientowane na terminale, takie jak powłoki (np. bash ), jako procesy odczytu/zapisu danych z/do głównego punktu końcowego. Powszechnym zastosowaniem PTY jest świadczenie usług logowania do sieci.
Devpts to wirtualny system plików jądra Linux używany do emulacji połączenia PTY.
Implementacja Linuksa jest oparta na terminalach w stylu Systemu V (powszechnie określanych jako pseudoterminale UNIX 98) i zapewnia API POSIX i Single Unix Specification w postaci funkcji posix_openpt() od 1998 roku.
Unix tty
jest zwykle używane do uzyskania ścieżki pliku PTY podłączonej do bieżącego standardowego wejścia .
Historia
Pseudoterminale były obecne w DEC PDP-6 Timesharing Monitor co najmniej już w 1967 roku i były używane do wdrażania przetwarzania wsadowego. Są one opisane w dokumentacji kolejnych TOPS-10 na PDP-10 . Inne systemy operacyjne DEC również miały PTY, w tym RSTS / E dla PDP-11 , podobnie jak system operacyjny TENEX innej firmy dla PDP-10.
Implementacje pseudo terminali uniksowych sięgają modyfikacji, które RAND i BBN wprowadziły do szóstej edycji pod koniec lat 70. XX wieku w celu obsługi zdalnego dostępu przez sieć. Nowoczesne pseudoterminale uniksowe powstały w 1983 r. podczas opracowywania ósmej edycji systemu Unix i były oparte na podobnej funkcji w TENEX. Były częścią wydania 4.2 BSD , z dość nieporęcznym interfejsem openpty()
zdefiniowanym do użytku.
System V firmy AT&T obejmował obsługę pseudoterminali jako sterowników w ich modelu urządzeń STREAMS , wraz z multiplekserem pseudoterminali ( /dev/ptmx ). To później ewoluowało, by stać się PTY w stylu Unix98.
Książki
Linux Programming Interface z 2010 roku zawiera cały rozdział (rozdział 64 „Pseudoterminale”, s. 1375–1399.) Wyjaśniający pseudoterminale. Jest też inny, rozdział 62 „Terminale”, poświęcony terminalom.
Konsola Windows została rozszerzona o interfejs PTY o nazwie ConPTY w 2018 roku.
Aplikacje
Rolą procesu emulatora terminala jest:
- interakcji z użytkownikiem,
- wprowadzanie tekstu do nadrzędnego pseudourządzenia do użytku przez powłokę (taką jak bash), które jest połączone z podrzędnym pseudourządzeniem,
- odczytywać tekst wyjściowy z nadrzędnego pseudourządzenia i pokazywać go użytkownikowi.
Proces emulatora terminala musi również obsługiwać polecenia sterujące terminala, np. do zmiany rozmiaru ekranu. Powszechnie używane programy emulujące terminale to xterm , GNOME Terminal , Konsole i Terminal (macOS) . Programy obsługi zdalnego logowania, takie jak ssh i telnet , pełnią tę samą rolę, ale komunikują się ze zdalnym użytkownikiem zamiast lokalnym. Weź również pod uwagę programy takie jak spodziewaj się .
Screen i Tmux są używane do dodawania kontekstu sesji do pseudoterminala, co zapewnia znacznie bardziej niezawodne i wszechstronne rozwiązanie. Na przykład każdy zapewnia trwałość terminala, umożliwiając użytkownikowi odłączenie się od jednego komputera, a następnie połączenie później z innym komputerem.
Warianty
W systemie BSD PTY plik urządzenia podrzędnego, który ogólnie ma nazwę w postaci /dev/tty[p-za-e][0-9a-f]
, obsługuje wszystkie wywołania systemowe mające zastosowanie do tekstowych urządzeń końcowych. W ten sposób obsługuje sesje logowania . Plik urządzenia głównego, który zwykle ma nazwę w postaci /dev/pty[p-za-e][0-9a-f]
, jest punktem końcowym komunikacji z emulatorem terminala. W tym [p-za-e]
może być co najwyżej 256 par tty. Również znalezienie pierwszego wolnego wzorca pty może być ekscytujące chyba że zostanie przyjęty schemat blokowania. Z tego powodu najnowsze systemy operacyjne BSD, takie jak FreeBSD , implementują Unix98 PTY.
BSD PTY stały się przestarzałe przez Unix98 ptys, którego system nazewnictwa nie ogranicza liczby pseudoterminali i do których dostęp odbywa się bez niebezpieczeństwa wyścigu. /dev/ptmx
jest „pseudoterminalowym multiplekserem głównym”. Otwarcie go zwraca deskryptor pliku węzła nadrzędnego i powoduje utworzenie powiązanego węzła podrzędnego /dev/pts/ N .
Zobacz też
Linki zewnętrzne
- Kontenery, pseudo TTY i kompatybilność wsteczna , LWN.net , 1 czerwca 2016 r., autor: Neil Brown