pty(7) Miscellaneous Information Manual pty(7) NAZWA pty - interfejsy pseudoterminala OPIS Pseudoterminal (czas skrotowo nazywany ,,pty") stanowi pare wirtualnych urzadzen znakowych, zapewniajacych dwukierunkowy kanal komunikacji. Jeden koniec kanalu nazywany jest nadrzednym (ang. master), a drugi podrzednym (ang. slave). Koncowka podrzedna pseudoterminala zapewnia interfejs dzialajacy dokladnie tak, jak klasyczny terminal. Proces, ktory oczekuje na podlaczenie do terminala, moze otworzyc koncowke podrzedna pseudoterminala i nastepnie byc kierowany przez program, ktory otworzyl koncowke nadrzedna. Wszystko co zostanie zapisane po stronie nadrzednej jest przekazywane procesowi po stronie podrzednej tak, jak gdyby bylo to wejscie wpisane na terminalu. Na przyklad wpisanie znaku przerwania (zwykle control-C) na glownym urzadzeniu wygeneruje sygnal przerwania (SIGINT) dla grupy procesow w tle, podlaczonej do urzadzenia podrzednego. I odwrotnie, wszystko co jest napisane na koncowce podrzednej pseudoterminala, moze byc odczytane przez proces podlaczony do koncowki nadrzednej. Przeplyw danych pomiedzy urzadzeniem nadrzednym i podrzednym nastepuje asynchronicznie, podobnie jak w przypadku fizycznych terminali. Dane zapisane na koncowce podrzednej stana sie dostepne na koncowce nadrzednej niezwlocznie, lecz niekoniecznie natychmiastowo. Podobnie, moze wystapic niewielkie opoznienie pomiedzy zapisem na urzadzeniu nadrzednym i uwidocznieniem tego na urzadzeniu podrzednym. Historycznie wyewoluowaly dwa interfejsy pseudoterminali: BSD i Systemu V. SUSv1 zestandaryzowalo interfejs pseudoterminala w oparciu o API Systemu V, zatem powinno byc ono uzywane przez wszystkie nowe programy korzystajace z pseudoterminali. Linux zapewnia pseudoterminale w stylu BSD i (zgodne ze standardem) w stylu Systemu V. Terminale w stylu Systemu V w systemach Linux sa czesto zwane pseudoterminalami UNIX 98. Od Linuksa 2.6.4, pseudoterminale w stylu BSD sa uwazane za przestarzale, ich obsluge mozna wylaczyc w czasie budowania jadra, wylaczajac opcje CONFIG_LEGACY_PTYS (od Linuksa 2.6.30, opcja ta jest domyslnie wylaczona w standardowym jadrze). W nowych aplikacjach powinno sie uzywac pseudoterminali UNIX 98. Pseudoterminale UNIX 98 Nieuzywane urzadzenie nadrzedne pseudoterminala UNIX 98 otwiera sie wywolujac posix_openpt(3) (funkcja ta otwiera urzadzenie klonowania koncowki nadrzednej, /dev/ptmx; zob pts(4)). Po dokonaniu zaleznych od programu inicjalizacji, zmiany wlasciciela i uprawnien urzadzenia podrzednego za pomoca grantpt(3) oraz odblokowania urzadzenia podrzednego poprzez unlockpt(3)), odpowiadajace urzadzenie podrzedne mozna otworzyc przekazujac nazwe zwrocona przez ptsname(3) w wywolaniu do open(2). Jadro Linux narzuca limit na liczbe dostepnych pseudoterminali UNIX 98. Do Linuksa 2.6.3 wlacznie, konfiguruje sie go w trakcie kompilacji (CONFIG_UNIX98_PTYS), a dozwolona liczba pseudoterminali moze wynosic do 2048, z domyslnym ustawieniem 256. Od Linuksa 2.6.4, limit ten mozna dostosowac dynamicznie za pomoca /proc/sys/kernel/pty/max, a odpowiedni plik /proc/sys/kernel/pty/nr, wskazuje jak wiele pseudoterminali jest obecnie w uzyciu. Wiecej informacji o tych dwoch plikach znajduje sie w podreczniku proc(5). Pseudoterminale BSD Pseudoterminale w stylu BSD sa zapewniane jako utworzona wczesniej para, z nazwami w postaci /dev/ptyXY (nadrzedne) i /dev/ttyXY (podrzedne), gdzie X jest litera z 16-znakowego zbioru [p-za-e], a Y jest litera z 16-znakowego zbioru [0-9a-f] (dokladny zakres liter w obu zbiorach rozni sie w poszczegolnych implementacjach Uniksa). Na przyklad /dev/ptyp1 i /dev/ttyp1 stanowia pare pseudoterminali BSD. Proces znajdowania nieuzywanej pary terminali polega na probowaniu otwarcia kolejnych urzadzen nadrzednych za pomoca open(2), do momentu az sie to powiedzie. Mozna wowczas otworzyc odpowiadajace urzadzenie podrzedne (w nazwie nadrzednej nalezy zamienic ,,tty" na ,,pty"). PLIKI /dev/ptmx urzadzenie klonowania koncowki nadrzednej UNIX 98 /dev/pts/* urzadzenia podrzedne UNIX 98 /dev/pty[p-za-e][0-9a-f] urzadzenia nadrzedne BSD /dev/tty[p-za-e][0-9a-f] urzadzenia podrzedne BSD UWAGI Pseudoterminale sa uzywane przez aplikacje takie jak uslugi 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, kontrolujacej pakietowy tryb dzialania mozna znalezc w podreczniku ioctl_tty(2). Operacji TIOCSTOP, TIOCSTART, TIOCUCNTL i TIOCREMOTE ioctl(2) BSD nie zaimplementowano w Linuksie. ZOBACZ TAKZE ioctl_tty(2), select(2), setsid(2), forkpty(3), openpty(3), termios(3), pts(4), tty(4) TLUMACZENIE Tlumaczenie niniejszej strony podrecznika: Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.15 17 maja 2025 r. pty(7)