pty(7)

NUME
pty - interfețe pseudo-terminale

DESCRIERE
Un pseudo-terminal (uneori abreviat „pty” este o pereche de dispozitive de caractere virtuale care oferă un canal de comunicare bidirecțional. Un capăt al canalului se numește maestru; iar celălalt capăt se numește sclav.

Capătul sclav al pseudo-terminalului oferă o interfață care se comportă exact ca un terminal clasic. Un proces care se așteaptă să fie conectat la un terminal poate deschide capătul sclav al unui pseudo-terminal și apoi poate fi condus de un program care a deschis capătul maestru. Tot ceea ce este scris la capătul maestru este furnizat procesului de la capătul sclav ca și cum ar fi o intrare tastată pe un terminal. De exemplu, scrierea caracterului de întrerupere (de obicei, control-C) pe dispozitivul principal ar determina generarea unui semnal de întrerupere (SIGINT) pentru grupul de procese din prim-plan conectat la sclav. În schimb, tot ceea ce este scris la capătul sclav al pseudo-terminalului poate fi citit de procesul conectat la capătul maestru.

Fluxul de date între maestru și sclav este gestionat în mod asincron, la fel ca fluxul de date cu un terminal fizic. Datele scrise pe sclav vor fi disponibile imediat la maestru, dar este posibil să nu fie disponibile imediat. În mod similar, este posibil să existe o mică întârziere de procesare între momentul în care se efectuează o scriere către maestru și momentul în care efectul este vizibil la sclav.

Din punct de vedere istoric, au evoluat două API pseudo-terminale: BSD și System V. SUSv1 a standardizat un API pseudo-terminal bazat pe API System V, iar acest API ar trebui să fie utilizat în toate programele noi care utilizează pseudo-terminale.

Linux oferă atât pseudo-terminale de tip BSD, cât și pseudo-terminale de tip System V (standardizate). Terminalele de tip System V sunt denumite în mod obișnuit pseudo-terminale UNIX 98 pe sistemele Linux.

Începând cu Linux 2.6.4, pseudo-terminalele de tip BSD sunt considerate demodate: suportul poate fi dezactivat la compilarea nucleului prin dezactivarea opțiunii CONFIG_LEGACY_PTYS; (începând cu Linux 2.6.30, această opțiune este dezactivată în mod implicit în nucleul din linia principală de dezvoltare). Pseudo-terminalele UNIX 98 ar trebui utilizate în noile aplicații.

  Pseudo-terminale UNIX 98
Un master pseudo-terminal UNIX 98 neutilizat este deschis prin apelarea posix_openpt(3); (această funcție deschide dispozitivul clonă master, /dev/ptmx; a se vedea pts(4)). După efectuarea oricăror inițializări specifice programului, modificarea proprietății și a permisiunilor dispozitivului sclav folosind grantpt(3) și deblocarea sclavului folosind unlockpt(3), dispozitivul sclav corespunzător poate fi deschis prin transmiterea numelui returnat de ptsname(3) într-un apel la open(2).

Nucleul Linux impune o limită a numărului de pseudo-terminale UNIX 98 disponibile. Până la Linux 2.6.3 inclusiv, această limită este configurată în momentul compilării nucleului (CONFIG_UNIX98_PTYS), iar numărul permis de pseudo-terminale poate fi de până la 2048, cu o valoare implicită de 256. Începând cu Linux 2.6.4, limita este reglabilă dinamic prin intermediul /proc/sys/kernel/pty/max, iar un fișier corespunzător, /proc/sys/kernel/pty/nr, indică câte pseudo-terminale sunt utilizate în prezent. Pentru mai multe detalii despre aceste două fișiere, a se vedea proc(5).

  Pseudo-terminale BSD
Pseudo-terminalele de tip BSD sunt furnizate sub formă de perechi precreate, cu nume de forma /dev/ptyXY (master) și /dev/ttyXY (slave), unde X este o literă din setul de 16 caractere [p-za-e], iar Y este o literă din setul de 16 caractere [0-9a-f]; (gama exactă de litere din aceste două seturi variază în funcție de implementările UNIX). De exemplu, /dev/ptyp1 și /dev/ttyp1 constituie o pereche de pseudo-terminale BSD. Un proces găsește o pereche de pseudo-terminale neutilizate încercând să open(2) fiecare pseudo-terminal master până când o deschidere reușește. Sclavul pseudo-terminal corespunzător ( înlocuiește „tty” cu „pty” în numele maestrului) poate fi apoi deschis.

FIȘIERE

/dev/ptmx
    dispozitiv clonă maestru UNIX 98

/dev/pts/*
    dispozitive sclave UNIX 98

/dev/pty[p-za-e][0-9a-f]
    dispozitive master BSD

/dev/tty[p-za-e][0-9a-f]
    dispozitive sclave BSD

NOTE
Pseudo-terminalele sunt utilizate de aplicații cum ar fi serviciile de conectare la rețea (ssh(1), rlogin(1), telnet(1)), emulatoare de terminale cum ar fi xterm(1), script(1), screen(1), tmux(1), unbuffer(1) și expect(1).

O descriere a TIOCPKT ioctl(2), care controlează funcționarea în modul pachet, poate fi găsită în ioctl_tty(2).

Operațiile BSD ioctl(2) TIOCSTOP, TIOCSTART, TIOCUCNTL și TIOCREMOTE nu au fost implementate în Linux.

CONSULTAȚI ȘI
ioctl_tty(2), select(2), setsid(2), forkpty(3), openpty(3), termios(3), pts(4), tty(4)

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.