35.6. termios
— Le style POSIX le contrôle TTY¶
Ce module fournit une interface aux appels POSIX pour le contrôle des E/S TTY. Pour une description complète de ces appels, voir la page du manuel UNIX termios(3). C’est disponible uniquement pour les versions Unix qui supportent le style POSIX termios et les contrôles d’entrées/sorties TTY configurés à l’installation.
Toutes les fonctions de ce module prennent un descripteur de fichier fd comme premier argument. Ça peut être un descripteur de fichiers entier, tel que le retourne sys.stdin.fileno()
, ou un file object, tel que sys.stdin
.
Ce module définit aussi toutes les constantes nécessaires pour travailler avec les fonctions fournies ici; elles ont les mêmes noms que leurs équivalents en C. Pour plus d’informations sur l’utilisation de ces terminaux, veuillez vous référer à votre documentation système.
Le module définit les fonctions suivantes :
-
termios.
tcgetattr
(fd)¶ Retourne une liste contenant les attributs TTY pour le descripteur de fichier fd, tel que:
[iflag, oflag, cflag, lflag, ispeed, ospeed, cc]
où cc est une liste de caractères spéciaux TTY (chacun est une chaine de caractère de longueur 1, à l’exception des éléments ayant les indicesVMIN
etVTIME
, ceux-ci sont alors des entiers quand ces champs sont définis). L’interprétation des options (flags en anglais) et des vitesses ainsi que l’indexation dans le tableau cc doit être fait en utilisant les constantes symboliques définies dans le moduletermios
.
-
termios.
tcsetattr
(fd, when, attributes)¶ Définit les attributs TTY pour le descripteur de fichiers fd à partir des attributs, qui est une liste comme celle retournée par
tcgetattr()
. L’argument when détermine quand les attributs sont changés:TCSANOW
pour un changement immédiat,TCSADRAIN
pour un changement après la transmission de toute sortie en file d’attente, ouTCSAFLUSH
pour un changement après avoir transmis toute sortie en file d’attente et rejeté toutes entrée en file d’attente.
-
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)¶ Attends que toutes les sorties écrites dans le descripteur de fichier fd soient transmises.
-
termios.
tcflush
(fd, queue)¶ Vide la queue de données du descripteur de fichier fd. Le sélecteur queue précise la queue:
TCIFLUSH
pour la queue des entrées,TCOFLUSH
pour la queue des sorties, ouTCIOFLUSH
pour les deux queues.
-
termios.
tcflow
(fd, action)¶ Suspends ou reprends l’entrée ou la sortie du descripteur de fichier fd. L’argument action peut être
TCOOFF
pour suspendre la sortie,TCOON
pour relancer la sortie,TCIOFF
pour suspendre l’entrée, ouTCION
pour relancer l’entrée.
Voir aussi
- Le module
tty
Fonctions utiles pour les opérations de contrôle communes dans le terminal.
35.6.1. Exemple¶
Voici une fonction qui demande à l’utilisateur d’entrer un mot de passe sans l’afficher. Remarquez la technique qui consiste à séparer un appel à tcgetattr()
et une instruction try
… finally
pour s’assurer que les anciens attributs tty soient restaurés tels quels quoi qu’il arrive :
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