openpty(3) Library Functions Manual openpty(3)

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

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

#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);

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.

Î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-IEȘIRE

openpty() eșuează dacă:

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ă.

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

BSD.

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ă.

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ă.

fork(2), ttyname(3), pty(7)

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 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.

2 mai 2024 Pagini de manual de Linux 6.8