stringtranslate.com

Pseudoterminal

Pseudoterminales tal como los utiliza el scriptcomando Unix que registra 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 (archivos) de pseudodispositivos que establecen un canal de comunicación bidireccional asincrónica ( IPC ) (con dos puertos) entre dos o más procesos. [1] [2] [3]

Un pseudodispositivo del par, el maestro , proporciona medios mediante los cuales un emulador de terminal o un servidor de inicio de sesión remoto (por ejemplo, un servidor Telnet , rlogin o Secure Shell ) [3] controla el proceso 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 estilo System V (comúnmente denominados pseudoterminales UNIX 98) [4] y proporciona POSIX y la API de especificación única de Unix en forma de 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 utilizaban para implementar el procesamiento por lotes. Se describen en la documentación del siguiente 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 pseudo terminales Unix se remontan a las modificaciones que RAND y BBN realizaron en una sexta edición a finales de la década de 1970 para admitir el acceso remoto a través de una red. [7] Los pseudoterminales Unix modernos 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] Formaban parte de la versión 4.2 de BSD , con una interfaz bastante engorrosa openpty()definida para su uso. [9]

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

Libros

La interfaz de programación de Linux de 2010 contiene un capítulo completo (capítulo 64 "Pseudoterminales" p1375–1399) que explica los pseudoterminales. Luego hay otro, 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 del emulador de terminal es:

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 más utilizados incluyen xterm , GNOME Terminal , Konsole y Terminal .

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

Considere también programas como expect .

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 a un 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 con el formato /dev/tty[p-za-e][0-9a-f], admite todas las llamadas al sistema aplicables a dispositivos terminales de texto. Por lo tanto, admite sesiones de inicio de sesión . El archivo del dispositivo maestro, que generalmente tiene un nombre con el formato /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 complicado a menos que se adopte un esquema de bloqueo. Por esa razón, los sistemas operativos BSD recientes, como FreeBSD , implementan PTY Unix98. [11]

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

Ver también

Referencias

  1. ^ abc "Archivos pseudoterminales". www.ibm.com . 2016-02-12 . Consultado el 30 de septiembre de 2021 .
  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, 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 SRI-NOSC Net UNIX líneas 15-31
  8. ^ 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 . doi :10.1002/j.1538-7305.1984.tb00071.x. S2CID  33497669. 
  9. ^ openpty(3)  -  Manual de funciones de la biblioteca FreeBSD
  10. ^ "Presentación de la pseudoconsola de Windows (ConPTY)". DevBolgs de línea de comandos de Windows . 3 de agosto de 2018.
  11. ^ pty(4)  -  Manual de interfaces del kernel de FreeBSD
  12. ^ pts(4)  –  Manual del programador de Linux – Archivos especiales

enlaces externos