35.6. termios
— Controle de tty no estilo POSIX¶
This module provides an interface to the POSIX calls for tty I/O control. For a complete description of these calls, see termios(2) Unix manual page. It is only available for those Unix versions that support POSIX termios style tty I/O control configured during installation.
Todas as funções neste módulo usam um descritor de arquivo fd como seu primeiro argumento. Pode ser um descritor de arquivo de tipo inteiro, como retornado por sys.stdin.fileno()
, ou um objeto arquivo, como o próprio sys.stdin
.
Este módulo também define todas as constantes necessárias para trabalhar com as funções fornecidas aqui; estes têm o mesmo nome de seus equivalentes em C. Consulte a documentação do sistema para mais informações sobre o uso dessas interfaces de controle de terminal.
O módulo define as seguintes funções:
-
termios.
tcgetattr
(fd)¶ Retorna uma lista contendo os atributos tty para o descritor de arquivo fd, da seguinte forma:
[iflag, oflag, cflag, lflag, ispeed, ospeed, cc]
onde cc é uma lista dos caracteres especiais do tty (cada uma string de comprimento 1, exceto os itens com índicesVMIN
eVTIME
, que são números inteiros quando esses campos são definidos). A interpretação dos sinalizadores e as velocidades, bem como a indexação no vetor cc, devem ser feitas usando as constantes simbólicas definidas no módulotermios
.
-
termios.
tcsetattr
(fd, when, attributes)¶ Define os atributos tty para o descritor de arquivo fd a partir de attribute, que é uma lista como a retornada por
tcgetattr()
. O argumento when determina quando os atributos são alterados:TCSANOW
para mudar imediatamente,TCSADRAIN
para alterar após transmitir todas as saídas na fila ouTCSAFLUSH
para alterar após transmitir todas as saídas na fila e descartando todas as entradas na fila.
-
termios.
tcsendbreak
(fd, duration)¶ Send a break on file descriptor fd. A zero duration sends a break for 0.25 –0.5 seconds; a nonzero duration has a system dependent meaning.
-
termios.
tcdrain
(fd)¶ Aguarda até que toda a saída escrita no descritor de arquivo fd seja transmitida.
-
termios.
tcflush
(fd, queue)¶ Descarta dados na fila no descritor de arquivo fd. O seletor queue especifica qual fila:
TCIFLUSH
para a fila de entrada,TCOFLUSH
para a fila de saída ouTCIOFLUSH
para as duas filas.
-
termios.
tcflow
(fd, action)¶ Suspende ou retoma a entrada ou saída no descritor de arquivo fd. O argumento action pode ser
TCOOFF
para suspender a saída,TCOON
para reiniciar a saída,TCIOFF
para suspender a entrada ouTCION
para reiniciar a entrada.
Ver também
- Módulo
tty
- Funções de conveniência para operações comuns de controle de terminal.
35.6.1. Exemplo¶
Aqui está uma função que solicita uma senha com o eco desativado. Observe a técnica usando uma chamada separada tcgetattr()
e uma instrução try
… finally
para garantir que os atributos tty antigos sejam restaurados exatamente, aconteça o que acontecer:
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