¿Puede un archivo de dispositivo en Linux apuntar a varios archivos?

¿Puede un archivo de dispositivo en Linux apuntar a varios archivos?

Un shell en Linux (por ejemplo:) bashtiene sus stdindescriptores de archivos stdouty stderrapuntan al mismo archivo de dispositivo; por ejemplo, los siguientes son los descriptores de archivos stdiny para :stdoutstderrbash

ingrese la descripción de la imagen aquí

Ahora /dev/tty1no es un archivo "real" en el que pueda leer y escribir, es un archivo de dispositivo que apunta a un archivo o a un búfer en la memoria o a otra cosa.

Ahora mi pregunta es: ¿ /dev/tty1apunta a un solo archivo o a dos archivos?

Lo que quiero decir es que, cuando bashse lee desde /dev/tty1( stdin) y cuando bashse escribe en /dev/tty1( stdouto stderr), ¿se lee y se escribe en elmismo archivo, ¿o /dev/tty1apunta a dos archivos, uno se usa cuando se lee desde /dev/tty1y el otro se usa cuando se escribe /dev/tty1?

Respuesta1

Un nodo de dispositivo apunta a un solodispositivo, que en Linux es manejado por el kernel. Cuando bashlee desde /dev/tty1, lee desde el controlador del dispositivo que administra el primer terminal; cuando escribe en él, escribe en el mismo controlador de dispositivo.

Respuesta2

Un archivo de dispositivo no "apunta a varios archivos". Un archivo de dispositivo ni siquiera “apunta” a un solo archivo. Un archivo de dispositivo apunta a un controlador. El controlador contiene código que maneja operaciones de lectura y escritura.

No tiene por qué haber una relación entre los datos que se leen desde el dispositivo y los datos que se escriben. Algunos dispositivos tienen uno, otros no. Por ejemplo, con un disco, los datos que se leen en una determinada posición son los datos que se escribieron previamente en esa posición. Por otro lado, con un puerto serie, los datos escritos en el dispositivo se envían por la línea serie y los datos leídos desde el dispositivo se reciben por la línea serie; lo que se envía es independiente de lo que se recibe.

Un terminal es muy parecido a un dispositivo serie. De hecho, históricamente los terminales físicos solían estar conectados a través de líneas serie. Cuando una aplicación lee un archivo de terminal, recibe datos enviados por el controlador de terminal o por el emulador de terminal: el controlador/emulador de terminal escribe la entrada en su lado del terminal, la aplicación lee la entrada desde su lado del terminal. Cuando una aplicación escribe en un archivo de terminal, envía datos que luego son leídos por el controlador de terminal o por el emulador de terminal: la aplicación escribe la salida en su lado del terminal, el controlador/emulador de terminal lee la salida en su lado del terminal .

información relacionada