#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);
cfsetspeed(), cfmakeraw() :
Depuis la glibc 2.19 :
_DEFAULT_SOURCE
glibc 2.19 et antérieures :
_BSD_SOURCE
Les fonctions termios établissent une interface
générale pour les terminaux, permettant de contrôler
les ports de communication asynchrone.
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
- If IGNBRK is set, a BREAK is ignored. If it is not set but
BRKINT is set, then a BREAK causes the input and output queues to
be flushed, and if the terminal is the controlling terminal of a
foreground process group, it will cause a SIGINT to be sent to this
foreground process group. When neither IGNBRK nor BRKINT are
set, a BREAK reads as a null byte ('\0'), except when PARMRK
is set, in which case it reads as the sequence \377 \0 \0.
- IGNPAR
- Ignorer les erreurs de format et de parité.
- PARMRK
- Si ce bit est défini, les octets d'entrée avec des erreurs
de format et de parité sont marqués lors de leur passage au
programme. Ce bit est signifiant seulement quand INPCK est
défini et que IGNPAR ne l'est pas. Deux octets
précédents \377 et \0 marquent les octets erronées.
Donc le programme lit en fait trois octets pour un octet erroné
reçu du terminal. Si un octet valable a la valeur \377 et si
ISTRIP (voir ci-dessous) n'est pas défini, le programme
pourrait le confondre avec le préfixe qui marque une erreur de
parité. Aussi, un octet \377 valable est passé au programme
sous la forme de deux octets \377 \377 dans ce cas.
- 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 capitales 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 ; cela permet au
caractère d'effacement de fonctionner correctement dans le mode
« cooked » (prétraitement).
Constantes pour l'attribut c_oflag :
- OPOST
- Traitement en sortie dépendant de l'implémentation.
- OLCUC
- (Pas dans POSIX) Convertir les minuscules en capitales 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
- Le caractère NL est présumé remplir la fonction de
retour charriot ; l'idée du noyau de la présente
colonne est définie à 0 après à la fois
NL et 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
- Masque du délai de tabulation horizontale. Les valeurs sont
TAB0, TAB1, TAB2, TAB3 (ou XTABS, mais
voir la section BOGUES). 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 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 la glibc, pris en charge dans Linux au moyen
des ioctls TCGET* et TCSET* ; voir
ioctl_tty(2))
- CMSPAR
- (Pas dans POSIX) Parité fixe (marque/espace
– géré 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
- (not in POSIX) Enable RTS/CTS (hardware) flow control. [requires
_BSD_SOURCE or _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 géré 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
- (not in POSIX) If ECHO is also set, terminal special characters
other than TAB, NL, START, and STOP are echoed as ^X, where X is
the character with ASCII code 0x40 greater than the special character. For
example, character 0x08 (BS) is echoed as ^H. [requires
_BSD_SOURCE or _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
- (not in POSIX) Echo only when a process is reading. (Not implemented on
Linux.)
- FLUSHO
- (Pas dans POSIX, non géré 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 de processus d'un processus en
arrière-plan essayant d'écrire sur son terminal de
contrôle.
- PENDIN
- (Pas dans POSIX, non géré 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 cela
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 géré 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 géré 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 gèree 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). Cela 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
- (not in POSIX; not supported under Linux; status request: 024, DC4,
Ctrl-T). Status character (STATUS). Display status information at
terminal, including state of foreground process and amount of CPU time it
has consumed. Also sends a SIGINFO signal (not supported on Linux)
to the foreground process group.
- 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 géré 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é 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.
The above symbolic subscript values are all different, except that
VTIME, VMIN may have the same value as VEOL,
VEOF, respectively. In noncanonical mode, the special character
meaning is replaced by the timeout meaning. For an explanation of
VMIN and VTIME, see the description of noncanonical mode
below.
tcgetattr() gets the parameters associated with the object
referred by fd, and stores them in the termios structure
referenced by termios_p. This function may be invoked from a
background process; however, the terminal attributes may be subsequently
changed by a foreground process.
tcsetattr() sets the parameters associated with the
terminal (unless support is required from the underlying hardware that is
not available) from the termios structure referred to by
termios_p. optional_actions specifies when the changes take
effect:
- 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.
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.
Dans le mode non canonique, l'entrée est disponible tout de
suite (sans que l'utilisateur ait à taper de caractère
délimiteur de ligne), aucun traitement de l'entrée n'est
effectué, et l'édition des lignes est
désactivée. Le tampon de lecture acceptera seulement 4095
caractères ; cela laisse l'espace nécessaire pour un
caractère saut de ligne si le mode d'entrée devient canonique.
La valeur des paramètres MIN (c_cc[VMIN]) et TIME
(c_cc[VTIME]) détermine les circonstances dans lesquelles
read(2) se termine ; il y a quatre cas
différents :
- 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.
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;
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.
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 :
Ces constantes sont en plus prises en charge sur les architectures
SPARC :
Ces constantes sont en plus prises en charge sur les architectures
non SPARC :
Du fait des différences entre les architectures, les
applications portables devraient vérifier si une constante
particulière Bnnn est définie avant de
l'utiliser.
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, cela
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.
Définir la vitesse à une valeur autre que celles
définies par les constantes Bnnn est possible au moyen
de l'ioctl TCSETS2 ; voir ioctl_tty(2).
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 à la
constante littérale 0 (pas la constante symbolique B0),
elle prendra la même valeur que la vitesse de sortie.
cfsetspeed() est une extension 4.4BSD. Elle prend les
mêmes arguments que cfsetispeed(), et définit à
la fois les vitesses d'entrée et de sortie.
UNIX V7 et plusieurs systèmes ultérieurs
avaient une liste de vitesse de transmission où l'on rencontrait,
après les valeurs de B0 à B9600, les deux
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
durée * N secondes, où N est au
moins 0,25, et au plus 0,5. Linux, AIX, DU, Tru64 envoient 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().
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@laposte.net>, Thierry Vignaud
<tvignaud@mandriva.com>, François Micaux, Alain Portal
<aportal@univ-montp2.fr>, Jean-Philippe Guérard
<fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh)
<jean-luc.coulon@wanadoo.fr>, Julien Cristau
<jcristau@debian.org>, Thomas Huriaux
<thomas.huriaux@gmail.com>, Nicolas François
<nicolas.francois@centraliens.net>, Florentin Duneau
<fduneau@gmail.com>, Simon Paillard
<simon.paillard@resel.enst-bretagne.fr>, Denis Barbier
<barbier@debian.org>, David Prévot <david@tilapin.org> et
Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>
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@lists.debian.org.