¿Para qué sirven los archivos tty?

publicado por: Anonymous

En la documentación de Python me topé con este método para los objetos como:

archivo = open('archivo', 'r'); 
archivo.isatty()

que retorna True/False si el archivo es un tty o no. Y me preguntaba

  1. ¿Qué es un archivo tty?
  2. ¿Para qué se usa un archivo tty?

file.isatty()

Return True if the file is connected to a tty(-like) device, else False.

Note: If a file-like object is not associated with a real file, this method should not be implemented.

https://docs.python.org/2/library/stdtypes.html?highlight=file%20flush#file.isatty

solución

La función file.isatty (TTY viene de TeleTYpewriter que son teleimpresoras electromecánicas usadas antiguamente para conectarse a las terminales), te dice si el archivo está conectado a un dispositivo (device) de tipo TTY.

En Linux, puedes saber el nombre del archivo conectado a tu STDIN (Standard Input) usando el comando tty:

$ tty
/dev/pts/24

El archivo /dev/pts/24 debería de estar conectado a un dispositivo virtual:

>>>  archivo = open('/dev/pts/24')
>>>  archivo.isatty()
True

En realidad los archivos /dev/pts/N son pseudo-terminales, es decir, aquellas que se crean cuando tienes una sesión desde una interfaz gráfica (por ejemplo, usando gnome-terminal). Si te conectas a una terminal virtual (las que usas en pantalla completa) usando Ctrl + Alt + F1, puedes ver que el commando tty te muestra otro archivo distinto:

$ tty
/dev/tty1

El archivo /dev/tty1 también debería estar conectado a un dispositivo TTY:

>>>  archivo = open('/dev/tty1')
>>>  archivo.isatty()
True

¿Qué es un archivo TTY?

En general, el sistema operativo crea unos archivos que te permiten comunicarte con dispositivos físicos, normalmente estos archivos se encuentran en la carpeta /dev y son tratados de forma especial ya que se les permite tener acceso a los drivers. Los archivos TTY son los responsables de mostrar la entrada y salida de información en la terminal (mediante el teclado y el monitor). Puedes ver una lista de ellos usando:

$ ls -l /dev/tty*
crw-rw-rw- 1 root  tty     5,  0 ene  6 15:36 /dev/tty
crw--w---- 1 root  tty     4,  0 ene  4 06:55 /dev/tty0
crw------- 1 cesar tty     4,  1 ene  7 08:04 /dev/tty1
crw--w---- 1 root  tty     4, 10 ene  4 06:55 /dev/tty10
crw--w---- 1 root  tty     4, 11 ene  4 06:55 /dev/tty11
crw--w---- 1 root  tty     4, 12 ene  4 06:55 /dev/tty12
crw--w---- 1 root  tty     4, 13 ene  4 06:55 /dev/tty13
crw--w---- 1 root  tty     4, 14 ene  4 06:55 /dev/tty14
crw--w---- 1 root  tty     4, 15 ene  4 06:55 /dev/tty15
crw--w---- 1 root  tty     4, 16 ene  4 06:55 /dev/tty16
crw--w---- 1 root  tty     4, 17 ene  4 06:55 /dev/tty17
crw--w---- 1 root  tty     4, 18 ene  4 06:55 /dev/tty18
crw--w---- 1 root  tty     4, 19 ene  4 06:55 /dev/tty19
crw------- 1 cesar tty     4,  2 ene  7 07:54 /dev/tty2
...

¿Para qué se usa un archivo TTY?

Pues, como mencioné en la primera pregunta, son usados por el sistema operativo para permitirte “conversar” con dispositivos físicos como el teclado y el monitor. Tal vez esta imagen ayude un poco:

introducir la descripción de la imagen aquí

Referencias

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *