2011-12-15 16 views
37

ls -la /dev/tty muestra la salida:¿Qué tiene de especial/dev/tty?

crw-rw-rw- 1 root tty 5, 0 Dec 14 22:21 /dev/tty 

¿Qué significa C al principio? Cuando hago algo como , imprime en stdout. ¿Qué contiene el archivo/dev/tty?

Respuesta

67

La 'c' significa que es un dispositivo de caracteres. tty es un archivo especial que representa el "terminal de control" para el proceso actual.

dispositivos de caracteres

Unix es compatible con los archivos de dispositivos '', que no son realmente archivos en absoluto, pero los puntos de acceso de archivos similar a los dispositivos de hardware. Un dispositivo de "carácter" es uno que se interconecta byte por byte (en lugar de IO búfer).

TTY

/dev/tty es un archivo especial, en representación de la terminal para el proceso actual. Entonces, cuando echo 1 > /dev/tty, su mensaje ('1') aparecerá en su pantalla. Del mismo modo, cuando cat /dev/tty, su entrada subsiguiente se duplica (hasta que presione Ctrl-C).

/dev/tty no 'contiene' nada como tal, pero puede leer y escribir en él (por lo que vale). No puedo pensar en un buen uso para él, pero hay archivos similares que son muy útiles para operaciones simples IO (por ejemplo /dev/ttyS0 es normalmente el puerto serie)

Esta cita es de http://tldp.org/HOWTO/Text-Terminal-HOWTO-7.html#ss7.3:

/dev/tty significa el terminal de control (si corresponde) para el proceso actual . Para saber qué tty están asociadas a qué procesos usan , el comando "ps -a" en el indicador del shell (línea de comando). Mire la columna "tty" . Para el proceso de shell en el que se encuentra,/dev/tty es el terminal que está utilizando actualmente. Escriba "tty" en el intérprete de comandos de la shell para ver qué es (consulte la página p. Ej. Tty (1))./dev/tty es algo así como un enlace a el nombre del dispositivo realmente terminal con algunas características adicionales para C-programadores : consulte la página de manual tty (4).

Aquí está la página del manual: http://linux.die.net/man/4/tty

2

La 'c' significa que es un archivo especial de caracteres.

8

/dev/tty es un sinónimo de la terminal de control (si lo hay) del proceso actual. Como dice jtl999, es un archivo especial de caracteres; eso es lo que significa c en la salida ls -l.

man 4 tty o man -s 4 tty debería darle más información, o puede leer la página del manual en línea here.

Incidentalmente, no necesariamente de impresión a stdout de la cáscara (aunque es de salida estándar de la orden pwd). Si la salida estándar de la carcasa ha sido redirigida a algo diferente de la terminal, /dev/tty todavía se refiere a la terminal.

También puede leer en /dev/tty, que normalmente se leerá desde el teclado.

+0

No puedo entender que su 'pwd>/dev/tty no se imprima necesariamente en stdout. Si la salida estándar ha sido redirigida a algo diferente de la terminal'. En mi opinión, siempre establecerá el descriptor de archivo 1 del proceso en/dev/tty. ¿Podrías explicar? – Dagang

+0

@dagang: Tu opinión está equivocada. Si la salida estándar se redirige a un archivo, el descriptor de archivo 1 se referirá a ese archivo, * no * a la terminal. Eso es lo que significa la redirección. –

+0

Sí, fd 1 puede referirse a cualquier archivo, pero '>/dev/tty' siempre significa hacer que fd 1 se refiera al terminal, independientemente de a dónde se refiera fd 1. ¿Podría darnos un ejemplo para apoyar su argumento? – Dagang