openpty(3)

NUME
openpty, login_tty, forkpty - funcții de utilitate pentru terminale

BIBLIOTECA
Biblioteca de utilități a sistemului (libutil, -lutil)

REZUMAT
#include <pty.h>

int openpty(int *amaster, int *aslave, char *name,
              const struct termios *termp,
              const struct winsize *winp);
pid_t forkpty(int *amaster, char *name,
              const struct termios *termp,
              const struct winsize *winp);

#include <utmp.h>

int login_tty(int fd);

DESCRIERE
Funcția openpty() găsește un pseudoterminal disponibil și returnează descriptorii de fișiere pentru maestru și sclav în amaster și aslave. Dacă name nu este NULL, numele de fișier al sclavului este returnat în name. Dacă termp nu este NULL, parametrii terminalului sclavului vor fi stabiliți la valorile din termp. Dacă winp nu este NULL, dimensiunea ferestrei sclavului va fi stabilită la valorile din winp.

Funcția login_tty() pregătește o autentificare pe terminalul la care face referire descriptorul de fișier fd (care poate fi un dispozitiv terminal real sau sclavul unui pseudoterminal, așa cum este returnat de openpty()) prin crearea unei noi sesiuni, făcând din fd terminalul de control pentru procesul apelant, stabilind fd ca fiind fluxurile standard de intrare, ieșire și eroare ale procesului curent și închizând fd.

Funcția forkpty() combină openpty(), fork(2) și login_tty() pentru a crea un nou proces care operează într-un pseudoterminal. Un descriptor de fișier care se referă la partea maestru a pseudoterminalului este returnat în amaster. În cazul în care name nu este NULL, memoria tampon la care acesta indică este utilizată pentru a returna numele de fișier al sclavului. Argumentele termp și winp, dacă nu sunt NULL, vor determina atributele terminalului și dimensiunea ferestrei părții sclav a pseudoterminalului.

VALOAREA RETURNATĂ
În cazul în care un apel la openpty(), login_tty() sau forkpty() nu are succes, se returnează -1, iar errno este configurată pentru a indica eroarea. În caz contrar, openpty(), login_tty() și procesul copil al forkpty() returnează 0, iar procesul părinte al forkpty() returnează ID-ul de proces al procesului copil.

ERORI
openpty() eșuează dacă:

ENOENT
    Nu există terminale disponibile.

login_tty() nu reușește dacă ioctl(2) nu reușește să stabilească fd la terminalul de control al procesului apelant.

forkpty() eșuează dacă fie openpty(), fie fork(2) eșuează.

ATRIBUTE
Pentru o explicație a termenilor folosiți în această secțiune, a se vedea attributes(7).
Interfață | Atribut | Valoare
forkpty(), openpty() | Siguranța firelor | MT-Safe locale
login_tty() | Siguranța firelor | MT-Unsafe race:ttyname

STANDARDE
BSD.

ISTORIC
Modificatorii const au fost adăugați la argumentele indicatorului de structură din openpty() și forkpty() în glibc 2.8.

Înainte de glibc 2.0.92, openpty() returnează descriptori de fișiere pentru o pereche de pseudoterminale BSD; începând cu glibc 2.0.92, aceasta încearcă mai întâi să deschidă o pereche de pseudoterminale UNIX 98 și revine la deschiderea unei perechi de pseudoterminale BSD în cazul în care acest lucru eșuează.

ERORI
Nimeni nu știe cât spațiu ar trebui să fie rezervat pentru name. Prin urmare, apelarea openpty() sau forkpty() cu name non-NULL poate să nu fie sigură.

CONSULTAȚI ȘI
fork(2), ttyname(3), pty(7)

TRADUCERE
Traducerea în limba română a acestui manual a fost creată 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.