termios
— Управление tty в стиле POSIX¶
Модуль предоставляет интерфейс для POSIX вызовов для управления вводом/выводом tty. Полное описание данных вызовов см. на странице руководства Unix termios(3). Он доступен только для тех версий Unix, которые поддерживают управление вводом-выводом в стиле POSIX termios, настроенное во время установки.
Все функции в данном модуле принимают файловый дескриптор 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
, чтобы гарантировать точное
восстановление старых tty атрибутов независимо от того, что происходит:
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