termios — Управление тити в стиле POSIX


Этот модуль предоставляет интерфейс к вызовам POSIX для управления вводом/выводом tty. Полное описание этих вызовов приведено на странице руководства по Unix termios(3). Он доступен только для тех версий Unix, которые поддерживают POSIX termios стиль управления вводом/выводом tty, настроенный во время установки.

Все функции этого модуля принимают в качестве первого аргумента дескриптор файла fd. Это может быть целочисленный дескриптор файла, например, возвращаемый sys.stdin.fileno(), или file object, например, сам 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. Нулевая длительность посылает прерывание на 0,25–0,5 секунды; ненулевая длительность имеет системно-зависимое значение.

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() и оператора tryfinally для обеспечения точного восстановления старых атрибутов 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
Вернуться на верх