TERMIOS(3)

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);

Exigences de macros de test de fonctionalité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 positionné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ée 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 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. Sinon c'est ASCII NUL (« \0 »). (Pas implémenté sous Linux.)

NLDLY
    Délai du saut de ligne. Les valeurs sont NL0 et NL1. [nécessite _BSD_SOURCE ou _SVID_SOURCE ou _XOPEN_SOURCE]

CRDLY
    Délai du retour chariot. Les valeurs sont CR0, CR1, CR2 ou CR3. [nécessite _BSD_SOURCE ou _SVID_SOURCE ou _XOPEN_SOURCE]

TABDLY
    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
    Délai du retour en arrière (baskspace). Les valeurs sont BS0 ou BS1 (n'a jamais été implémenté). [nécessite _BSD_SOURCE ou _SVID_SOURCE ou _XOPEN_SOURCE]

VTDLY
    Délai de tabulation verticale. Les valeurs sont VT0 ou VT1.

FFDLY
    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 binaire des vitesses (4+1 bits). [nécessite _BSD_SOURCE ou _SVID_SOURCE]

CBAUDEX
    (Pas dans POSIX) masque binaire é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
    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 est 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 (raccrochement).

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) Vitesse d'entrée (inutilisé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 signal 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, ou 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 avant leur effacement. (?) [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 et SIGQUIT, ainsi que le vidage de la file d'entrée durant les signaux 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 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, 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 encore 010, BS, Ctrl-H) 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, et aussi @) 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, le 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 secondes 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 jobs, 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 ; 024, DC4, Ctrl-T) Interrogation d'état.

Ces valeurs sont toutes différentes, sauf VTIME et VMIN qui peuvent avoir la même valeur de VEOL et VEOF respectivement. En mode non-canonnique, la signification d'un caractère spécial est remplacée par sa valeur de temporisation. Pour une explication de VMIN et VTIME, voir la description du mode canonique plus loin.

  Récupérer et modifier les paramètres du terminal
MIN (indexée avec VMIN) représente le nombre minimum de caractères à recevoir pour satisfaire une lecture. TIME (indexée avec VTIME) est une valeur en dixième de seconde. Quand ils sont tous deux remplis, une lecture attendra au moins un caractère, et reviendra dès que MIN caractères auront été reçus, ou si le temps TIME est écoulé depuis la réception du dernier caractère. Si seul MIN est rempli, la lecture ne reviendra pas avant d'avoir reçu MIN caractères. Si seul TIME est rempli, la lecture reviendra dès qu'un caractère arrivera, ou dès que le délai sera écoulé. Si aucun n'est rempli, la lecture reviendra immédiatement, ne lisant que les caractères immédiatement disponibles.

tcgetattr() obtient 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 canonique). 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éussit. Fixer une vitesse B0 demande au modem de racrocher. 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 sont spécifiées dans POSIX.1-2001. cfmakeraw() n'est pas standard mais est disponible 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 quatorzes 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 22 décembre 2007.

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.