2010-12-13 12 views
177

Me di cuenta de que hay muchas menciones de pty y tty en algunos proyectos de código abierto, ¿alguien podría decirme qué significan y cuál es la diferencia entre ellos? ¡Gracias!¿Qué significa pty y tty?

Respuesta

168

"tty" originalmente significaba "teletipo" y "pty" significa "pseudo-teletipo".

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

PTY es un pseudotty, una entrada de dispositivo que actúa como un terminal para la lectura y la escritura proceso de allí, pero gestionados por alguna otra cosa. Aparecieron por primera vez (según recuerdo) para X Windows y la pantalla y similares, donde necesitabas algo que funcionaba como una terminal pero que podía usarse desde otro programa.

+2

Tuve PTY en PDP-11 RSTS/E en 1976 ... – EJP

+0

Creo que ptys fue agregado a Unix principalmente para admitir Telnet, rsh y rlogin. –

+0

@larsmans, teníamos telnet (al menos) antes de que hubiera una pty; de hecho, telnet y yo nos metimos en la informática ese mismo año, 1969. Estaba algo apagado en el mundo DECNET cuando rsh apareció en UNIX, por lo que No estoy seguro del oder allí. En cualquier caso, eso es parte de "y cosas por el estilo". –

14

tty: teletipo. Por lo general, se refiere a los puertos serie de una computadora, a los que se conectaron las terminales.

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

194

A 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.

Un 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 salida a otro programa.

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

+1

¿Podría dar un ejemplo un poco más "preciso" de PTY? Todavía no entendía dónde entran, y cómo se llaman. Gracias – user3085931

+0

¿Alguien puede ayudar a cuándo y cómo el sistema operativo '* nix' crea estos pseudo terminales. –

+0

@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

11

Si ejecuta el comando mount sin argumentos de línea de comandos, que muestra los sistemas de archivos montados en su sistema, se dará cuenta de una línea que se ve algo como esto : ninguno en/dev/pts tipo 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 a ningún dispositivo de hardware, es un " magic "file system que es 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 normal,/dev/pts es un directorio especial creado por el kernel de Linux. Los contenidos del directorio varían con el tiempo y reflejan 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 se abre y muestra una entrada de correspon- diente en/dev/pts actúa el dispositivo .El PTY como un terminal de dispositivo que acepta entrada de la salida del teclado y pantallas de texto los programas que se ejecutan en ella. Los PTY están numerados, y el número PTY es el nombre de la entrada correspondiente en /dev/pts.

Para ejemplo, si el número de PTY de la nueva ventana de terminal es de 7, invocar este comando desde otra ventana: % echo 'Soy un di virtual'>/dev/pts/7 La salida aparece en la nueva ventana de terminal.

Cuestiones relacionadas