En algunos sistemas operativos , incluido Unix , un pseudoterminal , pseudotty o PTY es un par de pseudodispositivos , uno de los cuales, el esclavo , emula un dispositivo de terminal de texto de hardware , el otro, el maestro , proporciona los medios por los cuales un proceso de emulador de terminal controla el esclavo.
La función PTY es parte de POSIX y la Especificación Única de Unix en forma de función posix_openpt () desde 1998. [1]
Historia
Los pseudoterminales estaban presentes en el monitor de tiempo compartido DEC PDP-6 al menos desde 1967 y se utilizaron para implementar el procesamiento por lotes. [2] [ fuente no confiable? ] Se describen en la documentación del siguiente TOPS-10 en el PDP-10 . [3] Otros sistemas operativos DEC también tenían PTY, incluido RSTS / E para el PDP-11 , al igual que el sistema operativo TENEX de terceros para el PDP-10.
Los pseudoterminales Unix se originaron en 1983 durante el desarrollo de la octava edición de Unix y se basaron en una característica similar en TENEX. [4] Eran parte de la versión 4.2 de BSD , con una openpty()
interfaz bastante engorrosa definida para su uso. [5]
El System V de AT&T incluía soporte para pseudoterminales como controlador en su modelo de dispositivo STREAMS , junto con el multiplexor pseudoterminal ( / dev / ptmx ). Esto más tarde evolucionó para convertirse en el estilo Unix98 de PTY.
La interfaz de programación de Linux de 2010 contiene un capítulo completo (capítulo 64 "Pseudoterminals" p1375-1399.) Que explica los pseudoterminals. Luego hay otro, Capítulo 62 "Terminales", dedicado a terminales.
La consola de Windows se amplió para tener una interfaz PTY llamada ConPTY en 2018. [6]
Aplicaciones
La función del proceso del emulador de terminal es:
- para interactuar con el usuario,
- para alimentar la entrada de texto al pseudodispositivo maestro para que lo use el shell (como bash), que está conectado al pseudodispositivo esclavo,
- para leer la salida de texto del pseudodispositivo maestro y mostrársela al usuario.
El proceso del emulador de terminal también debe manejar comandos de control de terminal, por ejemplo, para cambiar el tamaño de la pantalla. Los programas emuladores de terminal ampliamente utilizados incluyen xterm , GNOME Terminal , Konsole y Terminal (macOS) . Los controladores de inicio de sesión remoto, como los servidores ssh y telnet, desempeñan el mismo papel, pero se comunican con un usuario remoto en lugar de uno local. También considere programas como esperar .
Screen y Tmux se utilizan para agregar un contexto de sesión a un pseudoterminal, lo que lo convierte en una solución mucho más robusta y versátil. Por ejemplo, cada uno proporciona persistencia de terminal, lo que permite al usuario desconectarse de una computadora y luego conectarse más tarde desde otra computadora.
Variantes
En el sistema BSD PTY, el archivo del dispositivo esclavo, que generalmente tiene un nombre del formulario /dev/tty[p-za-e][0-9a-f]
, admite todas las llamadas al sistema aplicables a los dispositivos terminales de texto. Por lo tanto, admite sesiones de inicio de sesión . El archivo de dispositivo maestro, que generalmente tiene un nombre del formulario /dev/pty[p-za-e][0-9a-f]
, es el punto final para la comunicación con el emulador de terminal. Con este [p-za-e]
esquema de nomenclatura, puede haber como máximo 256 pares tty. Además, encontrar el primer maestro pty libre puede ser picante a menos que se adopte un esquema de bloqueo. Por esa razón, los sistemas operativos BSD recientes, como FreeBSD , implementan Unix98 PTY. [7]
Los PTY de BSD han quedado obsoletos gracias a los ptys de Unix98, cuyo sistema de nombres no limita el número de pseudo-terminales y el acceso a los cuales se produce sin peligro de condiciones de carrera. /dev/ptmx
es el "multiplexor maestro pseudo-terminal". Al abrirlo, se devuelve un descriptor de archivo de un nodo maestro y hace que se cree un nodo esclavo asociado . [8]/dev/pts/N
Referencias
- ^ especificación única de UNIX , número 7 de The Open Group - Referencia de interfaces del sistema, la
- ^ "Grupos de Google" . groups.google.com .
- ^ Sección 5.10 del Manual de referencia del programador de monitores de tiempo compartido PDP-10
- ^ Ritchie, DM " Un sistema de entrada y salida de flujo ". Revista técnica de AT&T Bell Laboratories . 63 (8): 1897-1910. CiteSeerX 10.1.1.48.3730 .
- ^ - Manual de funciones de la biblioteca FreeBSD
- ^ "Presentación de la pseudoconsola de Windows (ConPTY)" . DevBolgs de línea de comandos de Windows . El 3 de agosto de 2018.
- ^ - Manual de interfaces del kernel de FreeBSD
- ^ - Manual del programador de Linux - Archivos especiales
enlaces externos
- Contenedores, pseudo TTY y compatibilidad con versiones anteriores , LWN.net , 1 de junio de 2016, por Neil Brown