Provided by: manpages-fr-dev_4.26.0-1_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(), tcflow(),            │ Sécurité des threads │ MT-Safe │
       │ tcsendbreak(), cfmakeraw(), cfgetispeed(), cfgetospeed(),            │                      │         │
       │ cfsetispeed(), cfsetospeed(), cfsetspeed()                           │                      │         │
       └──────────────────────────────────────────────────────────────────────┴──────────────────────┴─────────┘

STANDARDS

       tcgetattr()
       tcsetattr()
       tcsendbreak()
       tcdrain()
       tcflush()
       tcflow()
       cfgetispeed()
       cfgetospeed()
       cfsetispeed()
       cfsetospeed()
              POSIX.1-2008.

       cfmakeraw()
       cfsetspeed()
              BSD.

HISTORIQUE

       tcgetattr()
       tcsetattr()
       tcsendbreak()
       tcdrain()
       tcflush()
       tcflow()
       cfgetispeed()
       cfgetospeed()
       cfsetispeed()
       cfsetospeed()
              POSIX.1-2001.

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

Pages du manuel de Linux 6.9.1                    15 juin 2024                                        termios(3)