termios — POSIX стиль управления tty¶
Модуль обеспечивает интерфейс для вызовов POSIX для управления tty I/O. Полное описание этих вызовов см. termios(3) странице руководства Unix. Он доступен только для версий Unix, поддерживающих управление POSIX termios стиль tty I/O, настроенное во время установки.
Все функции этого модуля принимают файловый дескриптор fd в качестве
своего первого аргумента. Это может быть целочисленный файловый дескриптор,
например возвращенный sys.stdin.fileno() или файловый объект, например, сам sys.stdin.
Модуль также определяет все константы, необходимые для работы с функциями, представленными здесь; они имеют то же имя, что и их аналоги в C. Для получения дополнительной информации об использовании этих интерфейсов управления терминалами см. системную документацию.
Модуль определяет следующие функции:
-
termios.tcgetattr(fd)¶ Возвращает список, содержащий атрибуты tty для файлового дескриптора fd, следующим образом:
[iflag, oflag, cflag, lflag, ispeed, ospeed, cc]где cc - список специальных символов tty (каждый строка длиной 1, за исключением элементов с индексамиVMINиVTIME, которые являются целыми числами при определении этих полей). Интерпретация флагов и скоростей, а также индексация в массиве cc должны выполняться с использованием символьных констант, определенных в модулеtermios.
-
termios.tcsetattr(fd, when, attributes)¶ Задать атрибуты tty для файлового дескриптора fd из attributes, который является списком, подобным списку, возвращенный
tcgetattr(). Аргумент when определяет момент изменения атрибуты:TCSANOWнемедленно изменить,TCSADRAINизменить после передачи всех выходов в очереди илиTCSAFLUSHизменить после передачи всех выходов в очереди и отмены всех входов в очередь.
-
termios.tcsendbreak(fd, duration)¶ Отправить перерыв в файловый дескриптор fd. Нулевая duration посылает перерыв на 0,25–0,5 секунды; ненулевое duration имеет системно-зависимое значение.
-
termios.tcdrain(fd)¶ Дождаться передачи всех выходных данных, записанных в файл дескриптор fd.
-
termios.tcflush(fd, queue)¶ Удаление данных из очереди в файловом дескрипторе fd. Селектор queue указывает, какая очередь:
TCIFLUSHдля очереди ввода,TCOFLUSHдля очереди вывода илиTCIOFLUSHдля обеих очередей.
-
termios.tcflow(fd, action)¶ Приостановка или возобновление ввода или вывода для файлового дескриптора fd. Аргумент action можно
TCOOFFдля приостановки вывода,TCOONдля перезапуска вывода,TCIOFFдля приостановки ввода илиTCIONдля перезапуска ввода.
См.также
- Модуль
tty - Удобные функции для общих операций управления терминалом.
Пример¶
Далее представлена функция, которая запрашивает пароль с выключеным отражением. Обратите
внимание на технику с помощью отдельной tcgetattr() вызова и try…
finally инструкция, чтобы старые атрибуты были восстановлены, независимо
от того, что произойдет:
def getpass(prompt="Password: "):
import termios, sys
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
new = termios.tcgetattr(fd)
new[3] = new[3] & ~termios.ECHO # lflags
try:
termios.tcsetattr(fd, termios.TCSADRAIN, new)
passwd = input(prompt)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
return passwd
