2012-05-03 16 views
26

Tanto las descripciones de los archivos stdin como stdout lo señalan. ¿Como funciona? ¿Puede alguien señalar un buen recurso para entender los terminales UNIX y las llamadas al sistema que interactúan con él?¿Qué es/dev/tty en UNIX?

Respuesta

40

dev/tty es un objeto del sistema de archivos que representa la consola actual. La copia de archivos en este "directorio" de la línea de comandos imprime el contenido de estos archivos a la consola:

cp myfile.txt /dev/tty 

es equivalente a

cat myfile.txt 

Estos objetos están ahí para le permiten usar el archivo familiarizado API para interactuar con la consola. Es una forma inteligente de unificar la API de la consola con la API de archivos. Puede usar fopen, fprintf, etc. para interactuar con la consola de la misma manera que interactúa con los archivos normales.

En este ejemplo se escribe "Hello, world\n" al terminal:

#include <stdio.h> 

int main (int argc, const char * argv[]) { 
    FILE *f = fopen("/dev/tty", "w"); 
    fprintf(f, "Hello, world!\n"); 
    return 0; 
} 
+1

¿Cuáles son pseudoterminales? ¿Cómo puedo interactuar con ellos? – Bruce

+4

@Bruce Los pseudo-terminales son abstracciones a lo largo de las líneas de '/ dev/tty' que representan, por ejemplo, otros terminales lógicos que no se corresponden con el terminal físico. Puede verlos en el trabajo abriendo dos ventanas xterm, escribiendo 'tty' en ellas para ver sus nombres de pseudo-terminal, y luego copiando un archivo en una ventana en la otra. Por ejemplo, si escribe 'tty' y obtiene'/dev/ttys002' en una ventana y '/ dev/ttys000' en la otra, puede copiar un archivo de un xterm en' ttys ... 'del otro, y el contenido se mostraría en la otra ventana. – dasblinkenlight

+0

¿cuál es la aplicación/uso de unificar las dos API y proporcionar dicha característica? –