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 durée);
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 vitesse);
int cfsetospeed(struct termios *termios_p, speed_t vitesse);
int cfsetspeed(struct termios *termios_p, speed_t vitesse);
Exigences de macros de test de fonctionnalités pour la glibc (consulter feature_test_macros(7)) :
cfsetspeed(),
cfmakeraw():
Since glibc 2.19:
_DEFAULT_SOURCE
Glibc 2.19 and earlier:
_BSD_SOURCE
DESCRIPTION
Les fonctions termios établissent une interface générale pour les terminaux, 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 spéciaux */
Les valeurs qui peuvent être mises dans ces membres sont décrites ci-dessous. Dans le cas des quatre premiers membres, les définitions de certains des modes associés qui peuvent être utilisés ne sont exposés que si une macro est définie pour des tests spécifiques (consultez feature_test_macros(7)), comme indiqué entre crochets (« [] »).
Dans les descriptions ci-dessous, « 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.
Constantes 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 au premier 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 caractère 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 |
If this bit is set, input bytes with parity or framing errors are marked when passed to the program. This bit is meaningful only when INPCK is set and IGNPAR is not set. The way erroneous bytes are marked is with two preceding bytes, \377 and \0. Thus, the program actually reads three bytes for one erroneous byte received from the terminal. If a valid byte has the value \377, and ISTRIP (see below) is not set, the program might confuse it with the prefix that marks a parity error. Therefore, a valid byte \377 is passed to the program as two bytes, \377 \377, in this case. |
If neither IGNPAR nor PARMRK is set, read a character with a parity error or framing error as \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) La sortie bloquée sera redémarrée en tapant n’importe quel caractère. Le défaut est de ne redémarrer la sortie qu’avec le caractère START. | ||
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 UTF-8 ; ceci permet au caractère d’effacement de fonctionner correctement dans le mode « cooked ».
Constantes pour l’attribut c_oflag :
OPOST |
Traitement en sortie dépendant de l’implémentation. | ||
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 |
Le caractère de remplissage est ASCII DEL (0177). Sinon c’est ASCII NUL (« \0 »). (Non implémenté dans Linux) | ||
NLDLY |
Masque du délai de saut de ligne. Les valeurs sont NL0 et NL1. [Nécessite _BSD_SOURCE ou _SVID_SOURCE ou _XOPEN_SOURCE] | ||
CRDLY |
Masque du délai de retour chariot. Les valeurs sont CR0, CR1, CR2 ou CR3. [Nécessite _BSD_SOURCE ou _SVID_SOURCE ou _XOPEN_SOURCE] | ||
TABDLY |
Horizontal tab delay mask. Values are TAB0, TAB1, TAB2, TAB3 (or XTABS, but see the BUGS section). A value of TAB3, that is, XTABS, expands tabs to spaces (with tab stops every eight columns). [requires _BSD_SOURCE or _SVID_SOURCE or _XOPEN_SOURCE] | ||
BSDLY |
Masque du délai de 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 |
Si le bit PARODD est positionné, la parité en entrée et sortie sera impaire ; sinon une parité paire est 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 (shell layers). (Non implémenté dans 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] (Non implémenté dans Linux) | ||
CMSPAR |
(Pas dans POSIX) Parité fixe (marque/espace - supporté par certains périphériques série) ; si PARODD est positionné, le bit de parité est toujours à 1 ; si PARODD n’est pas positionné, le bit de parité est toujours à 0. [Nécessite _BSD_SOURCE ou _SVID_SOURCE] |
CRTSCTS
(Pas dans POSIX) Contrôle de flux RTS/CTS. [Nécessite _BSD_SOURCE ou _SVID_SOURCE]
Constantes pour l’attribut c_lflag :
ISIG |
Lorsqu’un caractère INTR, QUIT, SUSP ou DSUSP arrive, engendrer le signal correspondant. | ||
ICANON |
Active le mode canonique (décrit ci-dessous). | ||
XCASE |
(Pas dans POSIX, non supporté sous Linux) Si ICANON est indiqué également, 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, _SVID_SOURCE ou _XOPEN_SOURCE.) | ||
ECHO |
Afficher les 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é, afficher le caractère NL même si ECHO n’est pas activé. |
ECHOCTL
(Pas dans POSIX) Si ECHO est également activé, les caractères spéciaux du terminal autres que TAB, NL, START, et STOP sont représentés par ^X, où X est le caractère dont le code ASCII est supérieur de 0x40 à celui du caractère spécial. Par exemple, 0x08 (BS) est représenté par ^H. [Nécessite _BSD_SOURCE ou _SVID_SOURCE]
ECHOPRT
(Pas dans POSIX) Si ICANON et ECHO 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’affichage que lorsque le caractère est lu. (Non implémenté dans Linux)
FLUSHO |
(Pas dans POSIX, non supporté 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ésactiver le vidage des files d’entrée et de sortie pendant la création des signaux pour les caractères INT, QUIT et SUSP. | ||
TOSTOP |
Envoyer 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 supporté 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
spéciaux. Les symboles (valeurs initiales) et
significations sont :
VDISCARD
(Pas dans POSIX, non supporté 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.
VDSUSP |
(Pas dans POSIX et non supporté sous Linux ; 031, EM, Ctrl-Y) Caractère de suspension retardée (DSUSP). 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 supporte le contrôle des processus, et non transmis en entrée. | ||
VEOF |
(004, EOT, Ctrl-D) Caractère de fin de fichier (EOF). 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. | ||
VEOL |
(0, NUL) Caractère fin de ligne supplémentaire (EOL). Reconnu quand ICANON est actif. | ||
VEOL2 |
(Pas dans POSIX ; 0, NUL) Encore un autre caractère fin de ligne (EOL2). Reconnu quand ICANON est actif. | ||
VERASE |
(0177, DEL, rubout, ou 010, BS, Ctrl-H ou encore #) Caractère d’effacement (ERASE). Ceci efface le caractère précédent pas encore effacé, mais ne revient pas en deça d’EOF ou du début de ligne. Reconnu quand ICANON est actif, et n’est pas transmis en entrée. | ||
VINTR |
(003, ETX, Ctrl-C, ou encore 0177, DEL, rubout) Caractère d’interruption (INTR). Envoie le signal SIGINT. Reconnu quand ISIG est présent, et n’est pas transmis en entrée. | ||
VKILL |
(025, NAK, Ctrl-U ou Ctrl-X, ou encore @) Caractère Kill (KILL). Il 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. | ||
VLNEXT |
(Pas dans POSIX ; 026, SYN, Ctrl-V) Suivant littéral (LNEXT). Protège le caractère suivant en lui supprimant toute signification spéciale. Reconnu quand IEXTEN est actif, et pas transmis en entrée. | ||
VMIN |
Nombre minimal de caractères lors d’une lecture en mode non canonique (MIN). | ||
VQUIT |
(034, FS, Ctrl-\) Caractère Quit (QUIT). Envoie le signal SIGQUIT. Reconnu quand ISIG est présent, et n’est pas transmis en entrée. |
VREPRINT
(Pas dans POSIX ; 022, DC2, Ctrl-R) Réafficher les caractères pas encore lus (REPRINT). Reconnu quand ICANON et IEXTEN sont actifs, et pas transmis en entrée.
VSTART |
(021, DC1, Ctrl-Q) Caractère de démarrage (START). Relance la sortie interrompue par un caractère d’arrêt. Reconnu quand IXON est actif, et pas transmis en entrée. |
VSTATUS
(Pas dans POSIX, non supporté sous Linux ; 024, DC4, Ctrl-T). Caractère d’état (STATUS). Affiche sur le terminal des informations sur l’état, incluant l’état du processus en premier plan et la quantité de temps CPU qu’il a consommé. Envoie aussi un signal SIGINFO (not supporté par Linux) au groupe du processus de premier plan.
VSTOP |
(023, DC3, Ctrl-S) Caractère d’arrêt (STOP). 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 (SUSP). Envoie le signal SIGTSTP. Reconnu quand ISIG est actif, et pas transmis en entrée. | ||
VSWTCH |
(Pas dans POSIX et non supporté sous Linux ; 0, NUL) Caractère de basculement (SWTCH). Utilisé par System V pour basculer les shells dans des calques (shell layers), notion qui a précédée le contrôle des travaux du shell. | ||
VTIME |
Délai en dixièmes de seconde pour une lecture en mode non canonique (TIME). |
VWERASE
(Pas dans POSIX ; 027, ETB, Ctrl-W) Effacement de mot (WERASE). Reconnu quand ICANON et IEXTEN sont actifs, et pas transmis en entrée.
Un caractère spécial de terminal isolé peut être désactivé en positionnant la valeur de l’élément c_cc correspondant à _POSIX_VDISABLE.
Les valeurs d’indices ci-dessus 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, consultez la description du mode non canonique ci-dessous.
Récupérer
et changer 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 au
premier plan.
tcsetattr()
définit les paramètres du terminal (à
moins que le matériel sous-jacent ne le supporte pas)
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 option 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
The setting of the ICANON canon flag in
c_lflag determines whether the terminal is operating
in canonical mode (ICANON set) or noncanonical mode
(ICANON unset). By default, ICANON is set.
Dans le mode canonique :
* |
L’entrée est rendue disponible ligne à ligne. Une ligne d’entrée est disponible quand un délimiteur de ligne (NL, EOL, EOL2 ou EOF au début d’une ligne). Sauf dans le cas de EOF, le délimiteur de ligne est inclus dans le tampon renvoyé par read(2). | ||
* |
L’édition des lignes est activée (ERASE, KILL ; et si le bit IEXTEN est positionné : WERASE, REPRINT, LNEXT). Un read(2) renverra au plus une ligne de l’entrée ; si le read(2) a demandé moins de caractères que disponibles dans la ligne en cours, seuls les octets demandés seront lus, et les autres caractères seront disponibles pour les read(2) suivants. | ||
* |
The maximum line length is 4096 chars (including the terminating newline character); lines longer than 4096 chars are truncated. After 4095 characters, input processing (e.g., ISIG and ECHO* processing) continues, but any input data after 4095 characters up to (but not including) any terminating newline is discarded. This ensures that the terminal can always receive more input until at least one line can be read. |
In noncanonical
mode input is available immediately (without the user having
to type a line-delimiter character), no input processing is
performed, and line editing is disabled. The read buffer
will only accept 4095 chars; this provides the necessary
space for a newline char if the input mode is switched to
canonical. The settings of MIN (c_cc[VMIN]) and TIME
(c_cc[VTIME]) determine the circumstances in which a
read(2) completes; there are four distinct cases:
MIN == 0, TIME == 0 (lecture de scrutation (polling))
Si des données sont disponibles, read(2) renvoie immédiatement le nombre d’octets disponibles ou le nombre d’octets demandés (le plus petit des deux). Si aucune donnée n’est disponible, read(2) renvoie 0.
MIN > 0, TIME == 0 (lecture bloquante)
read(2) est bloquant jusqu’à ce que MIN octets soient disponibles, puis renvoie jusqu’au nombre d’octet demandés.
MIN == 0, TIME > 0 (lecture avec délai)
TIME indique une limite de temps en dixième de seconde. Le décompte du temps commence lors de l’appel à read(2). read(2) se termine si au moins un octet est disponible ou si la temporisation expire. Si la temporisation expire sans qu’il n’y ait eu de données disponibles, read(2) renvoie 0. Si des données sont déjà disponibles au moment de l’appel à read(2), l’appel se comporte comme si les données étaient reçues immédiatement après l’appel.
MIN > 0, TIME > 0 (lecture avec délai entre deux octets)
TIME indique une limite de temps en dixième de seconde. Quand un premier caractère est disponible en entrée, la temporisation est démarrée, puis remise à zéro à chaque caractère reçu. read(2) se termine quand une des conditions suivantes est vraie.
* |
MIN octets ont été reçus. | ||
* |
Le délai entre deux octets est dépassé. | ||
* |
Le nombre d’octets demandés par read(2) a été reçu (POSIX ne spécifie pas cette condition de fin et d’autres implémentations de read(2) ne se terminent pas dans ce cas). |
Comme la temporisation n’est démarrée que lors de la réception du premier octet, au moins un octet sera lu. Si des données sont déjà disponibles au moment de l’appel à read(2), l’appel se comporte comme si les données étaient reçues immédiatement après l’appel.
POSIX ne spécifie pas si le réglage de l’attribut d’état de fichier O_NONBLOCK est prioritaire sur les réglages de MIN et TIME. Si O_NONBLOCK est défini, un read(2) en mode non canonique pourrait s’arrêter immédiatement, quelque soit le réglage de MIN ou TIME. De plus, si aucune donnée n’est disponible, POSIX permet un read(2) en mode non canonique de renvoyer soit 0, soit -1 avec errno défini à EAGAIN.
Mode brut
cfmakeraw() place le terminal dans un mode proche du
mode « raw » de l’ancien pilote
de terminal version 7 : l’entrée est
disponible caractère par caractère, il
n’y a pas d’écho ni de traitement
particulier des caractères d’entrée ou
sortie. Les attributs du terminal sont définis
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 nulle, 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 écrites 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
Il est possible d’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.
Définir 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() définit la vitesse de sortie stockée dans la structure termios pointée par termios_p à la valeur vitesse, 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 d’é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() définit la vitesse d’entrée stockée dans la structure termios à la valeur vitesse, qui doit être spécifiée à l’aide d’une des constantes Bnnn listées ci-dessus 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 définit à la fois 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.
ATTRIBUTS
Pour une explication des termes utilisés dans cette section, consulter attributes(7).
CONFORMITÉ
tcgetattr(), tcsetattr(), tcsendbreak(), tcdrain(), tcflush(), tcflow(), cfgetispeed(), cfgetospeed(), cfsetispeed() et cfsetospeed() sont spécifiés dans POSIX.1-2001.
cfmakeraw() et cfsetspeed() ne sont pas standard, mais sont disponibles sur les 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 et 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 duration * N secondes, où N est au moins 0,25, et au plus 0,5. Linux, AIX, DU, Tru64 envoie un break pendant duration millisecondes. FreeBSD, NetBSD, HP-UX et MacOS ignorent la valeur duration. Sous Solaris et UnixWare, tcsendbreak() avec une duration non nulle se comporte comme tcdrain().
BOGUES
On the Alpha architecture before Linux 4.16 (and glibc before 2.28), the XTABS value was different from TAB3 and it was ignored by the N_TTY line discipline code of the terminal driver as a result (because as it wasn’t part of the TABDLY mask).
VOIR AUSSI
reset(1), setterm(1), stty(1), tput(1), tset(1), tty(1), ioctl_console(2), ioctl_tty(2), setserial(8)
COLOPHON
Cette page fait partie de la publication 5.07 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page, peuvent être trouvées à l’adresse https://www.kernel.org/doc/man-pages/.
TRADUCTION
La traduction française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin [AT] laposte.net>, Thierry Vignaud <tvignaud [AT] mandriva.com>, François Micaux, Alain Portal <aportal [AT] univ-montp2.fr>, Jean-Philippe Guérard <fevrier [AT] tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon [AT] wanadoo.fr>, Julien Cristau <jcristau [AT] debian.org>, Thomas Huriaux <thomas.huriaux [AT] gmail.com>, Nicolas François <nicolas.francois [AT] centraliens.net>, Florentin Duneau <fduneau [AT] gmail.com>, Simon Paillard <simon.paillard [AT] resel.fr>, Denis Barbier <barbier [AT] debian.org> et David Prévot <david [AT] tilapin.org>
Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à <debian-l10n-french [AT] lists.org>.