Зачем служат файлы tty?

В документации Пайтона я столкнулся с этим методом для объектов как:

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

что возвращается True/False если файл - tty или нет. И я осведомлялся

  1. Что файл tty?
  2. Зачем используется файл tty?

file.isatty ()

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

Заметьте: If в file-like object is not associated with в реальный file, this method should not be implemented.

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

5
задан 16.03.2016, 07:25
2 ответа

Функция file.isatty (TTY приходит из TeleTYpewriter, которые teleimpresoras электромеханические использованные раньше, чтобы присоединяться в конечные остановки), он говорит тебе, ли присоединен файл к устройству (device) типа TTY.

В Linux, ты можешь знать имя файла соединенным к тебе STDIN (Стандарт Неудар в лунку) используя команду tty:

$ tty
/dev/pts/24

Файл /dev/pts/24 он должен бы быть присоединенным к виртуальному устройству:

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

В действительности файлы /dev/pts/N псевдо-конечные, а именно, те, которые создаются, когда у тебя есть сеанс с графического интерфейса (например, используя gnome-terminal). Если ты присоединяешься в виртуальную конечную остановку (те, которые ты используешь на полном экране) используя Ctrl + Alt + F1, ты можешь видеть, что commando tty он показывает тебе другой отличный файл:

$ tty
/dev/tty1

Файл /dev/tty1 также он должен бы быть присоединенным к устройству TTY:

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

Что файл TTY?

В общем, операционная система верьте в файлы, которые позволяют тебе сообщать тебе с физическими устройствами, обычно эти файлы находятся в папке /dev и к ним отнеслись как к специальной форме, так как им позволяет иметь доступ к драйверам. Файлы TTY - ответственные лица показывания ввода и вывода информации в конечной остановке (посредством клавиатуры и монитора). Ты можешь видеть список их используя:

$ 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
...

Зачем используется файл TTY?

Итак, поскольку я упомянул в первом вопросе, они использованы операционной системой, чтобы быть позволено тебе "беседовать" с физическими устройствами как клавиатура и монитор. Возможно это изображение помогло немного:

introducir la descripción de la imagen aquí

Ссылки

9
ответ дан 01.12.2019, 08:11
  • 1
    Невероятный ответ большое спасибо!! – Andrés Muñoz 08.01.2016, 07:24

tty это физический терминал, с клавиатурой и экраном, или виртуально как XTerm. В отличие от нормального файла, каждый tty считает "свойства" размером (размеры, ширина и высота), возможность менять цвета, и другие. В Unix и аналогичных системах как Linux каждый терминал (физический или виртуальный) присоединяется в виртуальный файл, Вашего собственного tty. Они могут находиться в /dev/: /dev/tty<N> они для консолей текста, и /dev/pts/<N> для участников соревнования терминала как XTerm или Гноме Терминаль.

Программа может проверять, что Ваш stdout и stderr они соответствуют одному tty и включать специальный способ, для p. ej. создавать интерактивный интерфейс с "окнами" как Midnight Commander в Linux/Unix или FAR Commander в Windows.

В Пайтоне возможно использовать так:

import sys
if sys.stdout.isatty():
    # escribir en rojo
    esc="\x1B["
    rojo=esc + "0;31m"
    normal=esc + "0m"
    print(rojo + "Hello World!" + normal)
else:
    # escribir normal
    print("Hello World!")

Этот код пишет текст "Ельо Ворльд!" в красном используя последовательности утечки ANSI (на английском), если он работает просто в bash, но с stdout пересланный в файл, пишет текст без специальных символов.

Кроме того возможно посылать что-то одному tty и этот tty он это получит. write и другие программы используют эту функцию, чтобы посылать сообщения пользователям.

3
ответ дан 01.12.2019, 08:11
  • 1
    Мне кажется превосходным утверждать, что tty - конечная остановка, но мне кажется, что вопрос идет м и # 225; s dirgida hac и # 237; в и #191; qu и # 233; это файл tty (и не только tty в сухие периоды), c и # 243; mo он отличается от оставшейся части файлов, cu и # 225; l - Ваше использование и из-за qu и # 233; в python добавляют этот м и # 233; совсем в file? По крайней мере, я вижу таким образом вопрос. – learnercys 07.01.2016, 07:35
  • 2
    я думаю, что, чтобы использовать Google Translate, не нужно этот сайт, возможно делать прямо в первоначальном SO – angus 07.01.2016, 14:08
  • 3
    Perd и # 243; ямс пожалуйста из-за моего Espa и # 241; ol, мой родной язык - Русский язык. Сожалею, без практики не s и # 233; многие t и # 233; rminos t и # 233; cnicos todav и # 237; в. – user3159253 07.01.2016, 15:02
  • 4
    Если он Вам кажется неприемлемым, я могу удалять ответ полностью. Но если возможно улучшать язык, быть благодарен за это и # 237; в. – user3159253 07.01.2016, 15:11
  • 5
    Ввиду того, что это не был traducci и # 243; n autom и # 225; костариканская а контент leg и # 237; я ворую, повторно открыл ответ и исправил грамматические ошибки. – Konamiman 08.01.2016, 10:32