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.
Disponibilidade: Unix.
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 índicesVMINeVTIME, 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 do tty para descritor de arquivo fd a partir de attributes, que é uma lista como a retornada por
tcgetattr(). O argumento when determina quando os atributos são alterados:- termios.TCSANOW¶
Altera os atributos imediatamente.
- termios.TCSADRAIN¶
Altera os atributos depois de transmitir todas as saídas enfileiradas.
- termios.TCSAFLUSH¶
Altera os atributos depois de transmitir todas as saídas enfileiradas e descartar todas as entradas enfileiradas.
- 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:
TCIFLUSHpara a fila de entrada,TCOFLUSHpara a fila de saída ouTCIOFLUSHpara 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
TCOOFFpara suspender a saída,TCOONpara reiniciar a saída,TCIOFFpara suspender a entrada ouTCIONpara reiniciar a entrada.
- termios.tcgetwinsize(fd)¶
Retorna uma tupla
(ws_row, ws_col)contendo o tamanho da janela de terminal para o descritor de arquivo fd. Requertermios.TIOCGWINSZoutermios.TIOCGSIZE.Adicionado na versão 3.11.
- termios.tcsetwinsize(fd, winsize)¶
Define o tamanho da janela de terminal para o descritor de arquivo fd de winsize, que é uma tupla de dois elementos
(ws_row, ws_col)como a retornada portcgetwinsize(). Requer pelo menos um dos pares (termios.TIOCGWINSZ,termios.TIOCSWINSZ); (termios.TIOCGSIZE,termios.TIOCSSIZE) a ser definido.Adicionado na versão 3.11.
Ver também
- Módulo
tty Funções de conveniência para operações comuns de controle de terminal.
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="Senha: "):
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