Pseudoterminal

Pseudoterminale, ponieważ są używane przez polecenie skryptu unix, które rejestruje dane wejściowe użytkownika w celu późniejszego odtworzenia.

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