NOMBRE¶
openpty, login_tty, forkpty - utilidades tty
SINOPSIS¶
#include <pty.h> /* para openpty y forkpty */
#include <utmp.h> /* para login_tty */
int openpty(int *amaster, int *aslave, char
*name, struct termios *termp, struct winsize *
winp);
int login_tty(int fd);
pid_t forkpty(int *amaster, char *name, struct
termios *termp, struct winsize *winp);
DESCRIPCIÓN¶
La función
openpty() busca una pseudo-tty disponible y devuelve los
descriptores de fichero para la pty maestra y esclava en
amaster y
aslave. Si
name es distinto de NULL, el nombre de fichero de la
pty esclava se devuelve en
name. Si
termp es distinto de NULL,
se asignará a los parámetros de terminal de la pty esclava los
valores en
termp. Si
winp es distinto de NULL, el tamaño de
la ventana de la pty esclava se fijará con los valores en
winp.
La función
login_tty() prepara un inicio de sesión en la tty
fd (que puede ser un dispositivo tty real, o la pty esclava de una
pseudo-tty devuelta por
openpty()) creando una nueva sesión,
haciendo que
fd sea la terminal de control del proceso actual, poniendo
fd como entrada, salida y salida de error estándar del proceso
actual, y cerrando
fd.
La función
forkpty() combina
openpty(),
fork(), y
login_tty() para crear un nuevo proceso operando en una pseudo-tty. El
descriptor de fichero del lado maestro de la pseudo-tty es devuelto en
amaster, y el nombre de fichero de la pty esclava en
name si
éste no es NULL. Los parámetros
termp y
winp , si no
son NULL, determinarán los atributos de la terminal y el tamaño de
la ventana del lado esclavo de la pseudo-tty.
VALOR DEVUELTO¶
Si una llamada a
openpty(),
login_tty(), o
forkpty() no
tiene éxito, se devuelve -1 y se modifica
errno para indicar el
error. En otro caso,
openpty(),
login_tty(), y el proceso hijo
de
forkpty() devuelven 0, y el proceso padre de
forkpty()
devuelve el identificador de proceso del proceso hijo.
ERRORES¶
openpty() fallará si:
- ENOENT
- No hay ttys disponibles.
login_pty() fallará si
ioctl() falla al poner a
fd
como terminal de control del proceso actual.
forkpty() fallará si
openpty() o
fork() fallan.
FICHEROS¶
/dev/[pt]ty[pqrstuwxyzabcdePQRST][0123456789abcdef]
Éstas son funciones de BSD, presentes en libc5 y glibc2.
VÉASE TAMBIÉN¶
fork(2)