stringtranslate.com

Pseudoterminal

Pseudoterminales tal como los utilizan los scriptcomandos de Unix que registran la entrada del usuario para reproducirla más tarde.

En algunos sistemas operativos , incluidos los sistemas tipo Unix , un pseudoterminal , pseudotty o PTY es un par de puntos finales de pseudodispositivo (archivos) que establecen un canal de comunicación bidireccional ( IPC ) asincrónico (con dos puertos) entre dos o más procesos. [1] [2] [3]

Un pseudodispositivo del par, el maestro , proporciona medios por los cuales un emulador de terminal o un proceso de servidor de inicio de sesión remoto (por ejemplo, un servidor Telnet, rlogin o Secure Shell) [ 3 ] controla al esclavo . El otro pseudodispositivo, el esclavo , emula un dispositivo de puerto serie de hardware , [1] y es utilizado por programas orientados a terminales como shells (por ejemplo, bash ) como procesos para leer/escribir datos desde/hacia el punto final maestro . [1] Los PTY son similares a las tuberías bidireccionales. [3] : 1388 

Devpts es un sistema de archivos virtual del kernel de Linux que contiene dispositivos pseudoterminales.

La implementación de Linux se basa en terminales de estilo System V (comúnmente denominadas pseudoterminales UNIX 98) [4] y proporciona POSIX y la API de especificación única de Unix en forma de una función posix_openpt() desde 1998. [5]

Historia

Los pseudoterminales estaban presentes en el Monitor de Tiempo Compartido DEC PDP-6 al menos desde 1967, y se usaban para implementar el procesamiento por lotes. Se describen en la documentación del sucesor TOPS-10 en el PDP-10 . [6] 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.

Las implementaciones de pseudoterminales Unix se remontan a las modificaciones que RAND y BBN hicieron a una sexta edición a fines de la década de 1970 para admitir el acceso remoto a través de una red. [7] Las pseudoterminales Unix modernas se originaron en 1983 durante el desarrollo de la octava edición de Unix y se basaron en una característica similar en TENEX. [8] Fueron parte de la versión 4.2 de BSD , con una interfaz bastante engorrosa openpty()definida para su uso. [9]

El System V de AT&T incluía compatibilidad con pseudoterminales como controlador en su modelo de dispositivo STREAMS , junto con el multiplexor de pseudoterminales ( /dev/ptmx ). Esto luego evolucionó hasta convertirse en el estilo Unix98 de PTY.

Libros

La Interfaz de Programación Linux de 2010 contiene un capítulo entero (capítulo 64 "Pseudoterminales", págs. 1375-1399) que explica los pseudoterminales. Luego hay otro capítulo, el capítulo 62 "Terminales", dedicado a los terminales.

La consola de Windows se amplió para tener una interfaz PTY llamada ConPTY en 2018. [10]

Aplicaciones

La función del proceso emulador de terminal es:

El proceso de emulación de terminal también debe manejar comandos de control de terminal, por ejemplo, para cambiar el tamaño de la pantalla. Los programas de emulación de terminal más utilizados son xterm , GNOME Terminal , Konsole y Terminal .

Los servidores de inicio de sesión remoto, como Secure Shell y Telnet, desempeñan la misma función pero se comunican con un usuario remoto en lugar de con uno local.

Screen y Tmux se utilizan para agregar un contexto de sesión a una pseudoterminal, lo que genera una solución mucho más robusta y versátil. Por ejemplo, cada uno proporciona persistencia de terminal, lo que permite que un usuario se desconecte de una computadora y luego se conecte más tarde desde otra computadora.

Variantes

En el sistema BSD PTY, el archivo de dispositivo esclavo, que generalmente tiene un nombre de la forma /dev/tty[p-za-e][0-9a-f], admite todas las llamadas del sistema aplicables a dispositivos de terminal de texto. Por lo tanto, admite sesiones de inicio de sesión . El archivo de dispositivo maestro, que generalmente tiene un nombre de la forma /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 nombres, puede haber como máximo 256 pares de tty. Además, encontrar el primer maestro pty libre puede ser arriesgado a menos que se adopte un esquema de bloqueo. Por esa razón, los sistemas operativos BSD recientes, como FreeBSD , implementan PTY de Unix98. [11]

Los PTY de BSD han quedado obsoletos a causa de los pty de Unix98 , cuyo sistema de nombres no limita el número de pseudoterminales y el acceso a los mismos se produce sin peligro de condiciones de carrera. /dev/ptmxes el "multiplexor maestro de pseudoterminales". Al abrirlo, se devuelve un descriptor de archivo de un nodo maestro y se crea un nodo esclavo asociado. [12]/dev/pts/N

Véase también

Referencias

  1. ^ abc "Archivos pseudoterminales". www.ibm.com . 2016-02-12 . Consultado el 2021-09-30 .
  2. ^ "Capítulo 64: Pseudoterminales - La interfaz de programación de Linux [Libro]". www.oreilly.com . Consultado el 30 de septiembre de 2021 .
  3. ^ abc Kerrisk, Michael (2010). La interfaz de programación de Linux: un manual de programación de sistemas Linux y UNIX. San Francisco: No Starch Press. ISBN 978-1-59327-291-3.OCLC 728672600  .
  4. ^ "pty(7) - Página del manual de Linux". man7.org . Consultado el 30 de septiembre de 2021 .
  5. ^ posix_openpt  – Referencia de interfaces del sistema, La especificación única de UNIX , versión 4 de The Open Group
  6. ^ Sección 5.10 del Manual de referencia del programador de monitores de tiempo compartido PDP-10
  7. ^ ``Controlador PTY para líneas 15-31 de SRI-NOSC Net UNIX
  8. ^ Ritchie, DM " Un sistema de entrada-salida de flujo ". AT&T Bell Laboratories Technical Journal . 63 (8): 1897–1910. CiteSeerX 10.1.1.48.3730 . doi :10.1002/j.1538-7305.1984.tb00071.x. S2CID  33497669. 
  9. ^ openpty(3)  –  Manual de funciones de la biblioteca de FreeBSD
  10. ^ "Presentación de la consola pseudo de Windows (ConPTY)". Línea de comandos de Windows DevBolgs . 3 de agosto de 2018.
  11. ^ pty(4)  –  Manual de interfaces del núcleo de FreeBSD
  12. ^ pts(4)  –  Manual del programador de Linux – Archivos especiales

Enlaces externos