Provided by: manpages-fr-dev_4.19.0-7_all bug

NOM

       termios,   tcgetattr,   tcsetattr,   tcsendbreak,  tcdrain,  tcflush,  tcflow,  cfmakeraw,
       cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed — Configuration du terminal

BIBLIOTHÈQUE

       Bibliothèque C standard (libc, -lc)

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() :
           Depuis la glibc 2.19 :
               _DEFAULT_SOURCE
           glibc 2.19 et antérieures :
               _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 signal  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  NULL  (« \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  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
              (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 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
              (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 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
              (Pas  dans  POSIX,  non  géré  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 géré 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 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.

       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
       gère 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
       La  définition  de  l'attribut  canonique ICANON dans c_lflag détermine si le terminal est
       dans le mode canonique (ICANON positionné) ou non canonique (ICANON non  positionné).  Par
       défaut, ICANON est positionné.

       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.

       •  La longueur maximale de ligne est 4096 caractères (y compris le caractère saut de ligne
          terminal) ;  les  lignes  de  plus  de  4096  caractères  sont  tronquées.  Après  4095
          caractères,  le  traitement de l'entrée (par exemple le traitement de ISIG et ECHO*) se
          poursuit, mais les données entrées après 4095 caractères jusqu'à (mais sans  l'inclure)
          un  saut  de ligne terminal sont abandonnées. Cela assure que le terminal peut toujours
          recevoir plus d'entrées jusqu'à ce que au moins une ligne puisse être lue.

       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.

   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
              B460800
              B500000
              B576000
              B921600
              B1000000
              B1152000
              B1500000
              B2000000

       Ces constantes sont en plus prises en charge sur les architectures SPARC :

              B76800
              B153600
              B307200
              B614400

       Ces constantes sont en plus prises en charge sur les architectures non SPARC :

              B2500000
              B3000000
              B3500000
              B4000000

       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.

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 elles réussissent,

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

       ┌────────────────────────────────────────────────────────┬──────────────────────┬─────────┐
       │InterfaceAttributValeur  │
       ├────────────────────────────────────────────────────────┼──────────────────────┼─────────┤
       │tcgetattr(), tcsetattr(), tcdrain(), tcflush(),         │ Sécurité des threads │ MT-Safe │
       │tcflow(), tcsendbreak(), cfmakeraw(), cfgetispeed(),    │                      │         │
       │cfgetospeed(), cfsetispeed(), cfsetospeed(),            │                      │         │
       │cfsetspeed()                                            │                      │         │
       └────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

       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 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 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().

BOGUES

       Sur les architectures Alpha avant Linux 4.16 (et la glibc avant la glibc 2.28), la  valeur
       XTABS  était  différente de TAB3 et était ignorée par le code de discipline de ligne N_TTY
       du pilote du terminal en conséquence (parce  qu'elle  ne  faisait  pas  partie  du  masque
       TABDLY).

VOIR AUSSI

       reset(1),  setterm(1),  stty(1), tput(1), tset(1), tty(1), ioctl_console(2), ioctl_tty(2),
       cc_t(3type), speed_t(3type), tcflag_t(3type), setserial(8)

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@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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.