Provided by: manpages-pl_4.27.0-1_all 

NAZWA
pty - interfejsy pseudoterminala
OPIS
Pseudoterminal (czas skrótowo nazywany „pty”) stanowi parę wirtualnych urządzeń znakowych, zapewniających
dwukierunkowy kanał komunikacji. Jeden koniec kanału nazywany jest nadrzędnym (ang. master), a drugi
podrzędnym (ang. slave).
Końcówka podrzędna pseudoterminala zapewnia interfejs działający dokładnie tak, jak klasyczny terminal.
Proces, który oczekuje na podłączenie do terminala, może otworzyć końcówkę podrzędną pseudoterminala i
następnie być kierowany przez program, który otworzył końcówkę nadrzędną. Wszystko co zostanie zapisane
po stronie nadrzędnej jest przekazywane procesowi po stronie podrzędnej tak, jak gdyby było to wejście
wpisane na terminalu. Na przykład wpisanie znaku przerwania (zwykle control-C) na głównym urządzeniu
wygeneruje sygnał przerwania (SIGINT) dla grupy procesów w tle, podłączonej do urządzenia podrzędnego. I
odwrotnie, wszystko co jest napisane na końcówce podrzędnej pseudoterminala, może być odczytane przez
proces podłączony do końcówki nadrzędnej.
Przepływ danych pomiędzy urządzeniem nadrzędnym i podrzędnym następuje asynchronicznie, podobnie jak w
przypadku fizycznych terminali. Dane zapisane na końcówce podrzędnej staną się dostępne na końcówce
nadrzędnej niezwłocznie, lecz niekoniecznie natychmiastowo. Podobnie, może wystąpić niewielkie opóźnienie
pomiędzy zapisem na urządzeniu nadrzędnym i uwidocznieniem tego na urządzeniu podrzędnym.
Historycznie wyewoluowały dwa interfejsy pseudoterminali: BSD i Systemu V. SUSv1 zestandaryzowało
interfejs pseudoterminala w oparciu o API Systemu V, zatem powinno być ono używane przez wszystkie nowe
programy korzystające z pseudoterminali.
Linux zapewnia pseudoterminale w stylu BSD i (zgodne ze standardem) w stylu Systemu V. Terminale w stylu
Systemu V w systemach Linux są często zwane pseudoterminalami UNIX 98.
Od Linuksa 2.6.4, pseudoterminale w stylu BSD są uważane za przestarzałe, ich obsługę można wyłączyć w
czasie budowania jądra, wyłączając opcję CONFIG_LEGACY_PTYS (od Linuksa 2.6.30, opcja ta jest domyślnie
wyłączona w standardowym jądrze). W nowych aplikacjach powinno się używać pseudoterminali UNIX 98.
Pseudoterminale UNIX 98
Nieużywane urządzenie nadrzędne pseudoterminala UNIX 98 otwiera się wywołując posix_openpt(3) (funkcja ta
otwiera urządzenie klonowania końcówki nadrzędnej, /dev/ptmx; zob pts(4)). Po dokonaniu zależnych od
programu inicjalizacji, zmiany właściciela i uprawnień urządzenia podrzędnego za pomocą grantpt(3) oraz
odblokowania urządzenia podrzędnego poprzez unlockpt(3)), odpowiadające urządzenie podrzędne można
otworzyć przekazując nazwę zwróconą przez ptsname(3) w wywołaniu do open(2).
Jądro Linux narzuca limit na liczbę dostępnych pseudoterminali UNIX 98. Do Linuksa 2.6.3 włącznie,
konfiguruje się go w trakcie kompilacji (CONFIG_UNIX98_PTYS), a dozwolona liczba pseudoterminali może
wynosić do 2048, z domyślnym ustawieniem 256. Od Linuksa 2.6.4, limit ten można dostosować dynamicznie za
pomocą /proc/sys/kernel/pty/max, a odpowiedni plik /proc/sys/kernel/pty/nr, wskazuje jak wiele
pseudoterminali jest obecnie w użyciu. Więcej informacji o tych dwóch plikach znajduje się w podręczniku
proc(5).
Pseudoterminale BSD
Pseudoterminale w stylu BSD są zapewniane jako utworzona wcześniej para, z nazwami w postaci /dev/ptyXY
(nadrzędne) i /dev/ttyXY (podrzędne), gdzie X jest literą z 16-znakowego zbioru [p-za-e], a Y jest literą
z 16-znakowego zbioru [0-9a-f] (dokładny zakres liter w obu zbiorach różni się w poszczególnych
implementacjach Uniksa). Na przykład /dev/ptyp1 i /dev/ttyp1 stanowią parę pseudoterminali BSD. Proces
znajdowania nieużywanej pary terminali polega na próbowaniu otwarcia kolejnych urządzeń nadrzędnych za
pomocą open(2), do momentu aż się to powiedzie. Można wówczas otworzyć odpowiadające urządzenie podrzędne
(w nazwie nadrzędnej należy zamienić „tty” na „pty”).
PLIKI
/dev/ptmx
urządzenie klonowania końcówki nadrzędnej UNIX 98
/dev/pts/*
urządzenia podrzędne UNIX 98
/dev/pty[p-za-e][0-9a-f]
urządzenia nadrzędne BSD
/dev/tty[p-za-e][0-9a-f]
urządzenia podrzędne BSD
UWAGI
Pseudoterminale są używane przez aplikacje takie jak usługi logowania sieciowego (ssh(1), rlogin(1),
telnet(1)), emulatory terminala m.in. xterm(1), script(1), screen(1), tmux(1), unbuffer(1) i expect(1).
Opis ioctl(2) TIOCPKT, kontrolującej pakietowy tryb działania można znaleźć w podręczniku ioctl_tty(2).
Operacji TIOCSTOP, TIOCSTART, TIOCUCNTL i TIOCREMOTE ioctl(2) BSD nie zaimplementowano w Linuksie.
ZOBACZ TAKŻE
ioctl_tty(2), select(2), setsid(2), forkpty(3), openpty(3), termios(3), pts(4), tty(4)
TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika: Michał Kułach <michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać
zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ
ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-
list@lists.sourceforge.net.
Linux man-pages 6.9.1 2 maja 2024 r. pty(7)