¿Qué significan pty y tty?

237

Noté que hay muchas menciones ptyy, ttyen algunos proyectos de código abierto, ¿alguien podría decirme qué significan y cuál es la diferencia entre ellos? ¡Gracias!

por qué
fuente

Respuestas:

225

"tty" originalmente significaba "teletipo" y "pty" significa "seudo teletipo".

En UNIX, / dev / tty * es cualquier dispositivo que actúa como un "teletipo", es decir, un terminal. (Llamado teletipo porque eso era lo que teníamos para las terminales en esos días ignorantes).

Una pty es una pseudotty, una entrada de dispositivo que actúa como una terminal para el proceso de lectura y escritura allí, pero que es administrada por otra cosa. Primero aparecieron (según recuerdo) para X Window y pantalla y similares, donde necesitabas algo que actuara como un terminal pero que pudiera usarse desde otro programa.

Charlie Martin
fuente
Creo que ptys se agregó a Unix principalmente para admitir Telnet, rsh y rlogin.
Fred Foo
55
@CharlieMartin ¿Qué quieres decir con que la pty es algo "que actuó como una terminal?" ¿Por qué querríamos algo así? ¿Y cómo otro programa hace uso de esta pty? Supongo que el pty transmite comandos o algo al terminal real (tty) para el programa. ¿Es esto correcto? Si no, ignore mi suposición y responda la primera parte de mi comentario.
OKGimmeMoney
16
Piense en un terminal como un objeto: conecta algo en un extremo con stdin y stdout en el otro. Un TTY real se conecta a un terminal físico. un PTY se conecta a un programa, por ejemplo, xterm, o una ventana de comandos, o una ventana de shell. Luego miente al programa y dice que realmente es tan terminal, honesto. Antes de los PTY, conectaba programas como este con tuberías, pero las tuberías tienen diferencias significativas, como sin control de flujo. Los PTY parecieron resolver esto.
Charlie Martin
3
@CharlieMartin "Un TTY real se conecta a un terminal físico". ¿Qué pasa con la consola de Linux? Por ejemplo, en un sistema Ubuntu, hay consolas Linux Ctrl-Alt-F{1..6}y están conectadas /dev/tty{1..6}. La consola de Linux no es un terminal físico, pero está conectada a un ttyN(no a un ptyN). ¿Me estoy perdiendo de algo?
Utku
1
Solo que prácticamente no puedes decir nada definitivo sobre LINUX que no tenga un caso extraño. En este caso, la consola de Linux es una característica del kernel que utiliza una entrada de dev / dev / tty, pero luego se conecta a un montón de cosas para comunicarle al usuario. en.wikipedia.org/wiki/Linux_console
Charlie Martin
235

Un tty es un terminal (significa teletipo : ¡los terminales originales usaban una impresora de línea para la salida y un teclado para la entrada!). Un terminal es básicamente un dispositivo de interfaz de usuario que usa texto para entrada y salida.

Una pty es un pseudo terminal: es una implementación de software que aparece en el programa adjunto como un terminal, pero en lugar de comunicarse directamente con un terminal "real", transfiere la entrada y la salida a otro programa.

Por ejemplo, cuando ssh en una máquina y ejecuta ls, el lscomando está enviando su salida a un pseudo-terminal, el otro lado del cual está conectado al demonio SSH.

coste y flete
fuente
1
¿Podría darnos un ejemplo un poco más "preciso" de PTY? Todavía no entendí dónde entran y cómo se les llama. Gracias
user3085931
¿Alguien puede ayudar cuándo y cómo *nixel sistema operativo basado crea estos pseudo terminales?
Krishna Oza
@darth_coder: se crean cuando una aplicación solicita uno. Eso sucede cuando haces cosas como abrir una nueva ventana gráfica de terminal o iniciar sesión de forma remota.
caf
@caf, ¿puede nombrar módulos del kernel o demonio responsable de generar un terminal?
Krishna Oza
@darth_coder: cualquier aplicación puede hacerlo. sshdy xtermson dos ejemplos típicos.
caf
21

tty: teletipo. Por lo general, se refiere a los puertos seriales de una computadora, a los cuales se conectaron terminales.

pty: pseudoteletype. Kernel proporcionó un puerto pseudoserial conectado a programas que emulan terminales, como xterm o screen.

wnoise
fuente
19

Si ejecuta el comando mount sin argumentos de línea de comando, que muestra los sistemas de archivos montados en su sistema, notará una línea que se ve así: none en / dev / pts type devpts (rw, gid = 5, mode = 620) Esto indica que un tipo especial de sistema de archivos, devpts, está montado en / dev / pts. Este sistema de archivos, que no está asociado con ningún dispositivo de hardware, es un sistema de archivos "mágico" creado por el Kernel de Linux. Es similar al sistema de archivos / proc

Al igual que el directorio / dev, / dev / pts contiene entradas correspondientes a los dispositivos. Pero a diferencia de / dev, que es un directorio ordinario, / dev / pts es un directorio especial creado dinámicamente por el kernel de Linux. El contenido del directorio varía con el tiempo y refleja el estado del sistema en ejecución. Las entradas en / dev / pts corresponden a pseudo-terminales (o pseudo-TTY o PTY).

Linux crea un PTY para cada nueva ventana de terminal que abre y muestra una entrada correspondiente en / dev / pts. El dispositivo PTY actúa como un dispositivo terminal: acepta la entrada del teclado y muestra la salida de texto de los programas que se ejecutan en él. . Los PTY están numerados y el número PTY es el nombre de la entrada correspondiente en / dev / pts.

Por ejemplo, si el número PTY de la nueva ventana de terminal es 7, invoque este comando desde otra ventana:% echo 'I am a virtual di'> / dev / pts / 7 La salida aparece en la nueva ventana de terminal.

nikolaos_mparoutis
fuente
2

A ttyes un físico t erminal- t elet y puerto pe en un ordenador (por lo general un puerto serie).

La palabra teletipo es una abreviatura de la máquina de escribir de telégrafo , o dispositivo de teletipo de la década de 1930, un dispositivo electromagnético que reemplazó las máquinas de codificación de telégrafo de las décadas de 1830 y 1840.

Teletipo
TTY - Teletipo de 1930

Una ptyes una p seudo- t ele Ty pe puerto proporcionado por un equipo núcleo del sistema operativo a los programas de software de conexión que emulan terminales, tales como SSH, xterm, o en la pantalla.

ingrese la descripción de la imagen aquí
PTY: pseudotipo

Una terminal es simplemente la interfaz de usuario de una computadora que usa texto para entrada y salida.


Implementaciones del sistema operativo

Estos utilización p seudo- t ele Ty pe puertos sin embargo, su denominación y las implementaciones se han ido distanciando un poco.

Linux monta un sistema de archivos especial devpts en / dev (la 's' presumiblemente significa s erial) que crea una entrada correspondiente /dev/ptspara cada nueva ventana de terminal que abra, por ejemplo/dev/pts/0


macOS / FreeBSD también utiliza la estructura de archivos / dev , sin embargo, utilizan una TTYconvención de nomenclatura numerada ttyspara cada nueva ventana de terminal que abra, por ejemplo/dev/ttys002


Microsoft Windows todavía tiene el concepto de un LPTpuerto para terminales de impresora de línea dentro de su Shell de comandos para la salida a una impresora.

Tony Barganski
fuente