Other Alias
login_tty, forkptySINOPSIS
#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.