TERMIOS
Section : Manuel du programmeur Linux (
3)
Mise à jour de la version anglaise : 26 novembre 2007
Index
Menu principal
NOM
termios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow, cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed - Configuration du terminal
SYNOPSIS
#include <termios.h>
#include <unistd.h>
int tcgetattr(int fd, struct termios *termios_p);
int tcsetattr(int fd, int optional_actions,
const struct termios *termios_p);
int tcsendbreak(int fd, int duree);
int tcdrain(int fd);
int tcflush(int fd, int queue_selector);
int tcflow(int fd, int action);
void cfmakeraw(struct termios *termios_p);
speed_t cfgetispeed(const struct termios *termios_p);
speed_t cfgetospeed(const struct termios *termios_p);
int cfsetispeed(struct termios *termios_p, speed_t speed);
int cfsetospeed(struct termios *termios_p, speed_t speed);
int cfsetspeed(struct termios *termios_p, speed_t speed);
Exigences de macros de test de fonctionnalités pour la glibc (voir
feature_test_macros(7)) :
cfsetspeed(),
cfmakeraw() :
_BSD_SOURCE
DESCRIPTION
Les fonctions termios établissent une interface générale
sous forme de terminal, permettant de contrôler les ports
de communication asynchrone.
La structure termios
Plusieurs fonctions décrites ici utilisent un argument
termios_p
qui est un pointeur sur une structure
termios.
Cette structure contient au moins les membres suivants :
tcflag_t c_iflag; /* modes d'entrée */
tcflag_t c_oflag; /* modes de sortie */
tcflag_t c_cflag; /* modes de contrôle */
tcflag_t c_lflag; /* modes locaux */
cc_t c_cc[NCCS]; /* caractères de contrôle */
Les valeurs qui peuvent être affectées
à ces champs sont décrites plus loin.
Dans le cas des quatre premiers champs masques de bits,
les définitions de certains des attributs associés qui peuvent
être utilisés ne sont exposés que si une macro spécifique
de test de fonctionnalités (voir
feature_test_macros(7))
est définie, comme indiqué entre crochets (« [] »).
Dans les descriptions plus loin, « pas dans POSIX » signifie
que la valeur n'est pas spécifiée dans POSIX.1-2001, et « XSI »
signifie que la valeur est spécifiée dans POSIX.1-2001
comme faisant partie de l'extension XSI.
Constante pour l'attribut
c_iflag :
- IGNBRK
-
Ignorer les signaux BREAK en entrée.
- BRKINT
-
Si
IGNBRK
est indiqué, un caractère BREAK en entrée est ignoré.
S'il n'est pas indiqué, mais si
BRKINT
est présent, alors un BREAK videra les files d'attente en entrée
et sortie, et si le terminal contrôle un groupe de processus
en avant-plan, un signal
SIGINT
sera envoyé à ce groupe.
Si ni
IGNBRK
ni
BRKINT
ne sont indiqués, un caractère BREAK sera lu comme un octet nul
(« \0 »), sauf si
PARMRK
est présent, auquel cas il sera lu comme une séquence \377 \0 \0.
- IGNPAR
-
Ignorer les erreurs de format et de parité.
- PARMRK
-
Si
IGNPAR
n'est pas indiqué, un caractère ayant une erreur de parité
ou de format est préfixé avec \377 \0.
Si ni
IGNPAR
ni
PARMRK
ne sont indiqués, un caractère contenant une erreur de parité
ou de format est lu comme \0.
- INPCK
-
Valider la vérification de parité en entrée.
- ISTRIP
-
Éliminer le huitième bit.
- INLCR
-
Convertir NL en CR en entrée.
- IGNCR
-
Ignorer CR en entrée.
- ICRNL
-
Convertir CR en NL en entrée, sauf si
IGNCR
est indiqué.
- IUCLC
-
(Pas dans POSIX) Transformer les majuscules en minuscules en entrée.
- IXON
-
Valider le contrôle de flux XON/XOFF en sortie.
- IXANY
-
(XSI) Redémarrer le flux de sortie par n'importe quel caractère.
(Le comportement par défaut est de seulement permettre le caractère START
pour redémarrer le flux de sortie.)
- IXOFF
-
Valider le contrôle de flux XON/XOFF en entrée.
- IMAXBEL
-
(Pas dans POSIX)
Faire sonner le terminal quand le tampon d'entrée est plein.
Linux n'implémente pas ce bit, et considère qu'il est toujours actif.
- IUTF8 (depuis Linux 2.6.4)
-
(Pas dans POSIX) L'entrée est en UTF8 ; cela permet de gérer
correctement le caractère d'effacement en mode affiné.
Constantes POSIX.1 pour l'attribut
c_oflag :
- OPOST
-
Traitement en sortie dépendant de l'implémentation.
Les autres constantes pour
c_oflag
sont définies dans POSIX.1-2001 sauf indication contraire.
- OLCUC
-
(Pas dans POSIX) Convertir les minuscules en majuscules en sortie.
- ONLCR
-
(XSI) Convertir NL en CR-NL en sortie.
- OCRNL
-
Convertir CR en NL en sortie.
- ONOCR
-
Ne pas émettre de CR en colonne 0.
- ONLRET
-
Ne pas émettre de CR.
- OFILL
-
Utiliser des caractères de remplissage pour le délai,
plutôt qu'une temporisation.
- OFDEL
-
(Pas dans POSIX) Le caractère de remplissage est ASCII DEL (0177).
Sinon c'est ASCII NUL (« \0 »).
(Pas implémenté sous Linux.)
- NLDLY
-
Masque du délai du saut de ligne.
Les valeurs sont
NL0
et
NL1.
[Nécessite
_BSD_SOURCE
ou
_SVID_SOURCE
ou
_XOPEN_SOURCE]
- CRDLY
-
Masque du délai du retour chariot.
Les valeurs sont
CR0,
CR1,
CR2
ou
CR3.
[Nécessite
_BSD_SOURCE
ou
_SVID_SOURCE
ou
_XOPEN_SOURCE]
- TABDLY
-
Masque du délai de tabulation horizontale.
Les valeurs sont
TAB0,
TAB1,
TAB2,
TAB3
ou
XTABS.
Une valeur
TAB3,
c'est-à-dire XTABS, convertit les tabulations en espaces
(positions toutes les huit colonnes).
[Nécessite
_BSD_SOURCE
ou
_SVID_SOURCE
ou
_XOPEN_SOURCE]
- BSDLY
-
Masque du délai du retour en arrière (backspace).
Les valeurs sont
BS0
ou
BS1
(n'a jamais été implémenté).
[Nécessite
_BSD_SOURCE
ou
_SVID_SOURCE
ou
_XOPEN_SOURCE]
- VTDLY
-
Masque du délai de tabulation verticale.
Les valeurs sont
VT0
ou
VT1.
- FFDLY
-
Masque du délai de saut de page.
Les valeurs sont
FF0
ou
FF1.
[Nécessite
_BSD_SOURCE
ou
_SVID_SOURCE
ou
_XOPEN_SOURCE]
Constantes pour l'attribut
c_cflag :
- CBAUD
-
(Pas dans POSIX) Masque des vitesses (4+1 bits).
[Nécessite
_BSD_SOURCE
ou
_SVID_SOURCE]
- CBAUDEX
-
(Pas dans POSIX) Masque étendu des vitesses (1 bit)
inclus dans
CBAUD.
[Nécessite
_BSD_SOURCE
ou
_SVID_SOURCE]
POSIX dit que la vitesse est stockée dans une structure
termios
sans dire précisément où, et fournit
cfgetispeed()
et
cfsetispeed()
pour la lire ou l'écrire.
Certains systèmes utilisent les bits de
CBAUD
dans
c_cflag,
d'autres systèmes utilisent des champs distincts, par exemple
sg_ispeed
et
sg_ospeed.
- CSIZE
-
Masque de longueur des caractères.
Les valeurs sont
CS5,
CS6,
CS7
ou
CS8.
- CSTOPB
-
Utiliser deux bits de stop plutôt qu'un.
- CREAD
-
Valider la réception.
- PARENB
-
Valider le codage de parité en sortie,
et la vérification de parité en entrée.
- PARODD
-
S'il est positionné, la parité en entrée et en sortie sera impaire ;
sinon, une parité paire sera utilisée.
- HUPCL
-
Abaisser les signaux de contrôle du modem lorsque le dernier processus
referme le périphérique (raccrochage).
- CLOCAL
-
Ignorer les signaux de contrôle du modem.
- LOBLK
-
(Pas POSIX) Bloquer la sortie depuis un niveau de shell non concurrent.
Utilisé par
shl
(couches shell).
(Pas implémenté sous Linux.)
- CIBAUD
-
(Pas dans POSIX) Masque des vitesses d'entrée.
Les bits pour
CIBAUD
sont les mêmes que ceux de
CBAUD,
décalés à gauche de
IBSHIFT
bits.
[Nécessite
_BSD_SOURCE
ou
_SVID_SOURCE]
(Pas implémenté sous Linux.)
- CMSPAR
-
(Pas dans POSIX)
Parité fixe (marque/espace),
prise en charge par certains périphériques série : si
PARODD
est positionné, le bit de parité vaut toujours 1 ; si
PARODD
n'est pas positionné, le bit de parité vaut toujours 0.
[Nécessite
_BSD_SOURCE
ou
_SVID_SOURCE]
- CRTSCTS
-
(Pas dans POSIX) Contrôle de flux RTS/CTS.
Constantes pour l'attribut c_lflag :
[Nécessite
_BSD_SOURCE
ou
_SVID_SOURCE]
- ISIG
-
Lorsqu'un caractère
INTR,
QUIT,
SUSP
ou
DSUSP
arrive, engendrer le signal correspondant.
- ICANON
-
Active le mode canonique (décrit plus loin).
- XCASE
-
(Pas dans POSIX, non pris en charge sous Linux)
Si
ICANON
est également indiqué, le terminal est en mode majuscule uniquement.
Les entrées sont converties en minuscules, sauf pour les caractères
précédés par « \ ».
En sortie, les caractères majuscules sont précédés
par « \ » et les minuscules sont converties en majuscules.
[Nécessite
_BSD_SOURCE
ou
_SVID_SOURCE
ou
_XOPEN_SOURCE]
- ECHO
-
Effectuer un écho des caractères saisis.
- ECHOE
-
Si
ICANON
est également activé, la touche ERASE efface le caractère précédent,
et WERASE efface le mot précédent.
- ECHOK
-
Si
ICANON
est également activé, la touche KILL efface la ligne en cours.
- ECHONL
-
Si
ICANON
est également activé, la touche NL dispose d'un écho local,
même si ECHO n'est pas activé.
- ECHOCTL
-
(Pas dans POSIX) Si
ECHO
est également activé, les signaux de contrôle ASCII autres
que TAB, NL, START, et STOP sont représentés en écho local par
^X,
où X est le caractère dont le code ASCII est supérieur de 0x40 à celui du
signal de contrôle.
Par exemple 0x08 (BS) est représenté par
^H.
[Nécessite
_BSD_SOURCE
ou
_SVID_SOURCE]
- ECHOPRT
-
(Pas dans POSIX) Si
ICANON
et
IECHO
sont aussi activés,
les caractères sont imprimés lorsqu'ils sont effacés.
[Nécessite
_BSD_SOURCE
ou
_SVID_SOURCE]
- ECHOKE
-
(Pas dans POSIX) Si
ICANON
est également activé, la touche KILL efface chaque caractère de la ligne,
comme indiqué par
ECHOE
et
ECHOPRT.
[Nécessite
_BSD_SOURCE
ou
_SVID_SOURCE]
- DEFECHO
-
(Pas dans POSIX) N'effectuer l'écho que lorsque le caractère est lu.
(Pas implémenté sous Linux.)
- FLUSHO
-
(Pas dans POSIX, non pris en charge sous Linux)
Le tampon de sortie est vidé.
Cet attribut est déclenché en tapant le caractère DISCARD.
[Nécessite
_BSD_SOURCE
ou
_SVID_SOURCE]
- NOFLSH
-
Désactive le vidage des files d'entrée et de sortie pendant
les signaux
SIGINT,
SIGQUIT
et
SIGSUSP.
- TOSTOP
-
Envoie le signal
SIGTTOU
au groupe d'un processus en arrière-plan
essayant d'écrire sur son terminal de contrôle.
- PENDIN
-
(Pas dans POSIX, non pris en charge sous Linux)
Tous les caractères de la file d'entrée sont réimprimés
quand le caractère suivant est lu.
(bash(1)
utilise ceci pour la complétion de commande.)
[Nécessite
_BSD_SOURCE
ou
_SVID_SOURCE]
- IEXTEN
-
Traitement de l'entrée dépendant de l'implémentation.
Cet attribut, tout comme
ICANON,
doit être actif pour que les caractères spéciaux EOL2, LNEXT, REPRINT et
WERASE soient interprétés, et pour que l'attribut
IUCLC
prenne effet.
Le tableau
c_cc
définit des caractères de contrôle spéciaux.
Les symboles (valeurs initiales) et significations sont :
- VINTR
-
(003, ETX, Ctrl-C, ou encore 0177, DEL, rubout)
Caractère d'interruption.
Envoie le signal
SIGINT.
Reconnu quand
ISIG
est présent, et n'est pas transmis en entrée.
- VQUIT
-
(034, FS, Ctrl-\)
Caractère Quit.
Envoie le signal
SIGQUIT.
Reconnu quand
ISIG
est présent, et n'est pas transmis en entrée.
- VERASE
-
(0177, DEL, rubout, ou 010, BS, Ctrl-H, ou encore #)
Caractère d'effacement.
Ceci efface le caractère précédent pas encore effacé,
mais ne revient pas en-deça de EOF ou du début de ligne.
Reconnu quand
ICANON
est actif, et n'est pas transmis en entrée.
- VKILL
-
(025, NAK, Ctrl-U ou Ctrl-X, ou encore @)
Caractère Kill.
Ceci efface tous les caractères en entrée,
jusqu'au dernier
EOF
ou début de ligne.
Reconnu quand
ICANON
est actif, et pas transmis en entrée.
- VEOF
-
(004, EOT, Ctrl-D)
Caractère de fin de fichier.
Plus précisément : ce caractère oblige l'envoi du contenu
du tampon vers le programme lecteur sans attendre la fin de ligne.
S'il s'agit du premier caractère de la ligne, l'appel à
read(2)
renvoie zéro dans
le programme appelant, ce qui correspond à une fin de fichier.
Reconnu quand
ICANON
est actif, et pas transmis en entrée.
- VMIN
-
Nombre minimum de caractères lors d'une lecture en mode non canonique.
- VEOL
-
(0, NUL)
Caractère fin de ligne supplémentaire.
Reconnu quand
ICANON
est actif.
- VTIME
-
Délai en dixièmes de seconde pour une lecture en mode non canonique.
- VEOL2
-
(Pas dans POSIX ; 0, NUL)
Encore un autre caractère fin de ligne.
Reconnu quand
ICANON
est actif.
- VSWTCH
-
(Pas dans POSIX et non pris en charge sous Linux ; 0, NUL)
Caractère de basculement (utilisé uniquement par
shl).
- VSTART
-
(021, DC1, Ctrl-Q)
Caractère de démarrage.
Relance la sortie interrompue par un caractère d'arrêt.
Reconnu quand IXON est actif, et pas transmis en entrée.
- VSTOP
-
(023, DC3, Ctrl-S)
Caractère d'arrêt.
Interrompt la sortie jusqu'à la pression d'un caractère de démarrage.
Reconnu quand
IXON
est actif, et pas transmis en entrée.
- VSUSP
-
(032, SUB, Ctrl-Z)
Caractère de suspension.
Envoie le signal
SIGTSTP.
Reconnu quand
ISIG
est actif, et pas transmis en entrée.
- VDSUSP
-
(Pas dans POSIX et non pris en charge sous Linux ; 031, EM, Ctrl-Y)
Caractère de suspension retardée.
Envoie le signal
SIGTSTP
quand le caractère est lu par le programme utilisateur.
Reconnu quand
IEXTEN
et
ISIG
sont actifs, et quand le système prend
en charge le contrôle des tâches, et non transmis en entrée.
- VLNEXT
-
(Pas dans POSIX ; 026, SYN, Ctrl-V)
Protège le caractère suivant en lui supprimant
toute signification spéciale.
Reconnu quand
IEXTEN
est actif, et pas transmis en entrée.
- VWERASE
-
(Pas dans POSIX ; 027, ETB, Ctrl-W)
Effacement de mot.
Reconnu quand
ICANON
et
IEXTEN
sont actifs, et pas transmis en entrée.
- VREPRINT
-
(Pas dans POSIX ; 022, DC2, Ctrl-R)
Réafficher les caractères pas encore lus.
Reconnu quand
ICANON
et
IEXTEN
sont actifs, et pas transmis en entrée.
- VDISCARD
-
(Pas dans POSIX, non pris en charge sous Linux ; 017, SI, Ctrl-O)
Bascule start/stop pour ignorer les caractères en attente de sortie.
Reconnu quand
IEXTEN
est actif, et pas transmis en entrée.
- VSTATUS
-
(Pas dans POSIX, non pris en charge sous Linux ; interrogation d'état :
024, DC4, Ctrl-T)
Ces valeurs sont toutes différentes, sauf
VTIME
et
VMIN
qui peuvent avoir la même valeur que
VEOL
et
VEOF
respectivement.
En mode non canonique, la signification d'un caractère spécial
est remplacée par sa valeur de temporisation.
Pour des explications sur
VMIN
et
VTIME,
voir la description du mode canonique plus loin.
Récupérer et modifier les paramètres du terminal
tcgetattr()
récupère les paramètres associés à l'objet référencé par
fd
et les stocke dans la structure
termios
pointée par
termios_p.
Cette fonction peut être appelée par un processus en arrière-plan ;
néanmoins, les attributs de terminal peuvent être modifiés
par la suite par le processus en avant-plan.
tcsetattr()
fixe les paramètres du terminal (à moins que le matériel sous-jacent
ne le prenne pas en charge) en lisant la structure
termios
pointée par
termios_p.
optional_actions
précise quand les changements auront lieu :
- TCSANOW
-
Les modifications sont effectuées immédiatement.
- TCSADRAIN
-
Les modifications sont effectuées lorsque
toutes les opérations d'écriture sur
fd
auront été transmises.
Cette fonction devrait être utilisée pour toute
modification de paramètre affectant les sorties.
- TCSAFLUSH
-
Les modifications sont effectuées
lorsque toutes les opérations d'écriture sur
fd
auront été transmises.
Les entrées qui n'ont pas été traitées seront éliminées
avant de faire les modifications.
Mode canonique et non canonique
La valeur du bit canon
ICANON
de
c_lflag
détermine si le terminal opère en mode canonique
(
ICANON
positionné) ou en mode non canonique
(
ICANON
non positionné).
Par défaut,
ICANON
est positionné.
En mode canonique :
- *
-
L'entrée est rendue disponible ligne par ligne.
Une ligne d'entrée est disponible lorsque l'un des délimiteurs
de ligne est tapé (NL, EOL, EOL2 ; ou EOF en début de ligne).
À part dans le cas de EOF, le délimiteur de ligne est inclus
dans le tampon renvoyé par
read(2).
- *
-
L'édition de ligne est activée (ERASE, KILL ; et si le bit
IEXTEN
est positionné : WERASE, REPRINT, LNEXT).
Un
read(2)
renvoie au plus une ligne d'entrée ; si le
read(2)
a demandé moins d'octets qu'il y en a de disponible
dans la ligne en cours, seuls les octets demandés seront lus
et les caractères restants seront disponibles pour les
read(2)
suivants.
Dans le mode non canonique, l'entrée est immédiatement disponible
(sans que l'utilisateur ait besoin de saisir un caractère délimiteur
de ligne), et l'édition de ligne est désactivée.
Les valeurs MIN de
(c_cc[VMIN])
et TIME de
(c_cc[VTIME])
déterminent les circonstances dans lesquelles un
read(2)
se termine ; il y a quatre cas distincts :
- *
-
MIN == 0 ; TIME == 0 :
Si des données sont disponibles,
read(2)
retourne immédiatement le nombre d'octets disponibles ou demandés
(le plus petit des deux).
Si aucune donnée n'est disponible,
read(2)
renvoie 0.
- *
-
MIN > 0 ; TIME == 0 :
read(2)
bloque jusqu'à ce que soit MIN octets, soit le nombre d'octets demandés
soient disponibles et retourne la plus petite de ces valeurs.
- *
-
MIN == 0 ; TIME > 0 :
TIME spécifie une limite de temporisation en dizièmes de seconde.
La temporisation est lancée lorsque
read(2)
est appelé.
read(2)
retourne soit lorsque au moins un octet de donnée est disponible,
soit lorsque la temporisation expire.
Si la temporisation expire sans que des données aient été disponibles,
read(2)
renvoie 0.
- *
-
MIN > 0 ; TIME > 0 :
TIME spécifie une limite de temporisation en dizièmes de seconde.
Une fois qu'un premier octet est disponible en entrée,
la temporisation est relancée après chaque octet reçu.
read(2)
retourne soit lorsque le nombre d'octets demandés ou MIN octets
(le plus petit des deux) ont été lus, soit lorsque la temporisation
entre deux octets a expirée.
Parce que la temporisation est lancée seulement après le premier octet,
au moins un octet doit être lu.
Mode brut
cfmakeraw()
configure le terminal dans un mode similaire au mode « raw »
de l'ancien pilote de terminal version 7 : l'entrée est disponible
caractère par caractère, le mode écho est désactivé de même que tous
les traitements particuliers des caractères en entrée et en sortie.
Les attributs du terminal sont configurés ainsi :
termios_p->c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP
| INLCR | IGNCR | ICRNL | IXON);
termios_p->c_oflag &= ~OPOST;
termios_p->c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
termios_p->c_cflag &= ~(CSIZE | PARENB);
termios_p->c_cflag |= CS8;
Contrôle de la ligne
tcsendbreak()
transmet un flux continu de bits à zéro pendant une
durée
donnée si le terminal utilise une transmission série asynchrone.
Si
durée
vaut zéro, les bits à zéro sont émis pendant au moins 0,25 seconde,
et pas plus de 0,5 seconde.
Si
durée
est non nul, l'émission se fera pendant un temps
dépendant de l'implémentation.
Si le terminal n'est pas connecté avec une liaison série asynchrone,
tcsendbreak()
n'effectue aucune action.
tcdrain()
attend que toutes les écritures sur l'objet référencé par
fd
aient été transmises.
tcflush()
élimine toutes les écritures sur l'objet
fd
pas encore transmises, ainsi que les données reçues
mais pas encore lues, ceci en fonction de la valeur de
queue_selector :
- TCIFLUSH
-
Efface les données reçues mais non lues.
- TCOFLUSH
-
Efface les données écrites mais non transmises.
- TCIOFLUSH
-
Efface à la fois les données reçues non lues,
et les données ecrites non transmises.
tcflow()
suspend la transmission ou la réception des données
sur l'objet référencé par
fd,
en fonction de la valeur de
action :
- TCOOFF
-
Suspend les transmissions.
- TCOON
-
Redémarre les transmissions suspendues.
- TCIOFF
-
Envoie un caractère STOP, ce qui demande au terminal de suspendre
toute transmission de données vers le système.
- TCION
-
Envoie un caractère START, ce qui redémarre la transmission des données
depuis le terminal vers le système.
Lors de l'ouverture d'un terminal, ni ses sorties,
ni ses entrées ne sont suspendues.
Vitesse de la ligne
On peut utiliser les fonctions suivantes pour lire ou écrire la
vitesse de communication du terminal, en utilisant la structure
termios.
Les modifications ne prennent effet que lorsque la fonction
tcsetattr()
a été invoquée et qu'elle a réussi.
Fixer une vitesse
B0
demande au modem de raccrocher.
La vitesse réelle de communication correspondant à
B38400
peut être modifiée avec
setserial(8).
Les vitesses en entrée et en sortie sont stockées dans la structure
termios.
cfgetospeed()
renvoie la vitesse de sortie stockée dans la structure
termios
pointée
par
termios_p.
cfsetospeed()
fixe la vitesse de sortie stockée dans la structure
termios
pointée par
termios_p
à la valeur
speed,
qui doit être l'une des constantes suivantes :
B0
B50
B75
B110
B134
B150
B200
B300
B600
B1200
B1800
B2400
B4800
B9600
B19200
B38400
B57600
B115200
B230400
La vitesse nulle,
B0,
est utilisée pour terminer une connexion.
Si
B0
est indiquée, il n'y a aucune garantie
sur l'état des lignes de contrôle du modem.
Normalement, ceci devrait déconnecter la ligne.
CBAUDEX
est un masque pour les vitesses supérieures à celles définies
dans POSIX.1 (supérieures ou égales à 57600).
Ainsi,
B57600
&
CBAUDEX
est non nulle.
cfgetispeed()
renvoie la vitesse d'entrée stockée dans la structure
termios.
cfsetispeed()
fixe la vitesse d'entrée stockée dans la structure
termios
à la valeur
speed,
qui doit être spécifiée comme l'une des constantes
Bnnn
indiquées plus haut pour
cfsetospeed().
Si la vitesse d'entrée est mise à 0,
elle prendra la même valeur que la vitesse de sortie.
cfsetspeed()
est une extension BSD 4.4.
Elle prend les mêmes arguments que
cfsetispeed(),
et permet de configurer les vitesses d'entrée et de sortie.
VALEUR RENVOYÉE
cfgetispeed()
renvoie la vitesse d'entrée stockée dans la structure
termios.
cfgetospeed()
renvoie la vitesse de sortie stockée dans la structure
termios.
Toutes les autres fonctions renvoient
- 0
-
si elle réussissent, et
- -1
-
si elles échouent, auquel cas
errno
contient le code d'erreur.
Notez que
tcsetattr()
indique une réussite si
une
des modifications peut être réalisée.
Toutefois, pour effectuer plusieurs changements, il peut être
nécessaire de faire suivre cet appel d'une invocation de
tcgetattr()
pour vérifier que les modifications ont bien été réalisées.
CONFORMITÉ
tcgetattr(),
tcsetattr(),
tcsendbreak(),
tcdrain(),
tcflush(),
tcflow(),
cfgetispeed(),
cfgetospeed(),
cfsetispeed()
et
cfsetospeed()
sont spécifiées dans POSIX.1-2001.
cfmakeraw()
et
cfsetspeed()
ne sont pas standard mais sont disponibles sur BSD.
NOTES
Unix V7 et plusieurs systèmes ultérieurs avaient une liste de vitesse de
transmission où l'on rencontrait, après les quatorze valeurs B0...B9600,
les constantes EXTA, EXTB (« External A » et « External B »).
De nombreux systèmes étendent cette liste
avec des vitesses bien plus rapides.
L'effet d'une
durée
non nulle avec
tcsendbreak()
est variable.
SunOS indique un break pendant
durée * N
secondes, où
N
est au moins 0,25, et au plus 0,5.
Linux, AIX, DU, Tru64 envoie un break pendant
durée
millisecondes.
FreeBSD, NetBSD, HP-UX et MacOS ignorent la valeur
durée.
Sous Solaris et Unixware,
tcsendbreak()
avec une
durée
non nulle se comporte comme
tcdrain().
VOIR AUSSI
stty(1),
console_ioctl(4),
tty_ioctl(4),
setserial(8)
TRADUCTION
Ce document est une traduction réalisée par Christophe Blaess
<http://www.blaess.fr/christophe/> le 29 novembre 1996
et révisée le 17 juillet 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation
française de qualité. La version anglaise la plus à jour de ce document est
toujours consultable via la commande : « LANG=C man 3 termios ».
N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute
erreur dans cette page de manuel.
Index
- NOM
-
- SYNOPSIS
-
- DESCRIPTION
-
- La structure termios
-
- Récupérer et modifier les paramètres du terminal
-
- Mode canonique et non canonique
-
- Mode brut
-
- Contrôle de la ligne
-
- Vitesse de la ligne
-
- VALEUR RENVOYÉE
-
- CONFORMITÉ
-
- NOTES
-
- VOIR AUSSI
-
- TRADUCTION
-
Dernière mise à jour : 17 juillet 2008