PTS(4)

NOMBRE
ptmx y pts - pseudo-terminal maestra y esclava

DESCRIPCIÓN
El fichero /dev/ptmx es un dispositivo de caracteres con número mayor 5 y número menor 2, creado normalmente con modo 0666 y de propietario root.root. Se utiliza para crear un par de pseudo-terminales maestra y esclava.

Cuando un proceso abre /dev/ptmx, obtiene un descriptor de fichero para una pseudo-terminal maestra (PTM), y se crea un dispositivo pseudo-terminal esclavo (PTS) en el directorio /dev/pts. Cada descriptor de fichero obtenido al abrir /dev/ptmx es una PTM independiente con su propia PTS asociada, cuya ruta puede ser consultada pasando el descriptor a la función ptsname(3).

Antes de abrir la pseudo-terminal esclava, debe pasar el descriptor de fichero de la pseudo-terminal maestra a grantpt(3) y unlockpt(3).

Una vez que la pseudo-terminal maestra y esclava están abiertas, la pseudo-terminal esclava sirve procesos con una interfaz idéntica a la de una terminal real.

Los datos escritos en el esclavo se presentan en el descriptor maestro como entrada. Los datos escritos en el maestro se presentan en el esclavo como entrada.

En la práctica, las pseudo-terminales se usan para implementar emuladores de terminal como xterm(1), en los cuales los datos leídos de la pseudo-terminal maestra son interpretados por la aplicación de la misma forma que una terminal real los interpretaría, y para implementar programas de acceso remoto como sshd(8), en los cuales los datos leídos de la pseudo-terminal esclava se envían a través de la red al programa cliente que está conectado al terminal o emulador de terminal.

Las pseudo-terminales se pueden emplear también para enviar la salida a los programas que normalmente se niegan a leer la entrada de tuberías (como su(8), y passwd(8)).

FICHEROS
/dev/ptmx, /dev/pts/*

OBSERVACIONES
El soporte de Linux a todo lo anterior (conocido como sistema de nombres de pty's de Unix98) se realiza usando el sistema de ficheros devpts, que debe montarse en /dev/pts.

Antes de este esquema de Unix98, las pseudo-terminales maestras se llamaban /dev/ptyp0, ... y las esclavas /dev/ttyp0, ... y era necesario tener ya creados y asignados un gran número de nodos-i de dispositivo.

VÉASE TAMBIÉN
getpt(3), grantpt(3), ptsname(3), unlockpt(3)