Caso de uso de proporcionar API similar a un archivo para terminal/consola

Caso de uso de proporcionar API similar a un archivo para terminal/consola

Fue explicado eneste hilo de desbordamiento de pilaque cada terminal lógica tiene un "pseudo-terminal", y que escribir en uno:

$ cat some-file.txt > /dev/ttys002

hará que los datos aparezcan en esa ventana de terminal. ¿Cuál es el motivo para proporcionar una API similar a un archivo para las ventanas de terminal? ¿Hay algún caso de uso en el que esto sea útil?

hasta aquícopiado palabra por palabra.

No se limita a pseudo-terminales, está disponible para/dev/tty*también.

Respuesta1

La mayoría de los dispositivos de hardware ofrecen una API similar a un archivo. Esto se hace porque simplifica tanto el diseño del sistema operativo como el diseño de aplicaciones. El sistema operativo solo tiene que tener una API de archivos y no una API de terminal separada, una API de disco separada, una API de sonido separada, etc. Las aplicaciones que no utilizan funciones específicas de un tipo particular de hardware pueden utilizar la API de archivos sin importar si acceden a un archivo normal o a un dispositivo de hardware.

Gran parte del hardware tiene capacidades específicas de un tipo de dispositivo. Las aplicaciones pueden invocar estas capacidades a través deioctl. Parte del hardware no aparece como archivos porque no se puede simplemente leer o escribir un flujo de bytes en él. Por ejemplo, Linux no expone las interfaces de red como archivos de dispositivo, porque las interfaces de red funcionan en paquetes, no en bytes individuales.

Históricamente, los terminales eran dispositivos de hardware. Hoy en día la mayoría de terminales son proporcionados mediante emuladores, ya sea en entorno gráfico o a través de la red. Sin embargo, incluso los pseudo-terminales parecen dispositivos de hardware, porque el kernel contiene un manejo especial para rastrear qué procesos se están ejecutando en qué terminal.

En cada variante de Unix,/dev/ttysignifica "el terminal actual para este proceso". En otras palabras, cada vez que un proceso abre ese archivo, designa el nombre del proceso.terminal de control). Esto permite que un proceso interactúe a través de su terminal incluso cuando sus descriptores de entrada y salida estándar han sido redirigidos.

Cada terminal tiene un archivo de dispositivo asociado, que es un terminal de hardware (tty, por ejemplo /dev/tty1, /dev/tty2,... para las consolas virtuales en modo texto en Linux, o /dev/ttyS0,... para puertos serie en Linux) o un terminal emulado (pty, abreviatura de pseudo -terminal; /dev/pts/NUMBERen Linux). Este es el archivo a través del cual los procesos intercambian datos con el controlador o emulador del terminal.

Esto se debe a que los terminales son archivos en los que puede ejecutar aplicaciones y mostrar su salida al terminal. Cuando ejecuta un programa en la línea de comando, de forma predeterminada, su salida va a la terminal, pero puede redirigirlo a un archivo.

información relacionada