36.7. 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.
All functions in this module take a file descriptor fd as their first
argument. This can be an integer file descriptor, such as returned by
sys.stdin.fileno()
, or a file object, such as sys.stdin
itself.
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.
36.7.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 = raw_input(prompt)
finally:
termios.tcsetattr(fd, termios.TCSADRAIN, old)
return passwd