35.6. termios
— Controle de tty no estilo POSIX¶
Este módulo fornece uma interface para as chamadas POSIX para controle de E/S do tty. Para uma descrição completa dessas chamadas, consulte a página de manual Unix termios(3). Está disponível apenas para as versões Unix que tenham suporte ao controle de E/S de tty no estilo POSIX do termios configurado durante a instalação.
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)¶ Envia uma quebra no descritor de arquivo fd. Uma duração zero, representada por duration, envia uma pausa por 0,25 a 0,5 segundos; duration com valor diferente de zero tem um significado dependente do sistema.
-
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