Provided by: manpages-fr_1.67.0-1_all bug

NOM

       termios,  tcgetattr,  tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow,
       cfmakeraw,  cfgetospeed,  cfgetispeed,   cfsetispeed,   cfsetospeed   -
       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, 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);

       int cfmakeraw (struct termios * termios_p);

       speed_t cfgetispeed (struct termios * termios_p);

       speed_t cfgetospeed (struct termios * termios_p);

       int cfsetispeed (struct termios * termios_p, speed_t speed);

       int cfsetospeed (struct termios * termios_p, speed_t speed);

DESCRIPTION

       Les fonctions termios établissent une interface générale sous forme  de
       terminal,   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 de controle */

       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é, un caractère BREAK sera lu comme un caractère nul,
              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 Eliminer 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  (Pas  dans  Posix ;  XSI)  Redémarrer  le  flux  de  sortie  par
              n’importe quel caractère.

       IXOFF  Valider le contrôle de flux XON/XOFF en entrée.

       IMAXBEL
              (Pas dans Posix)  Faire  sonner  le  terminal  quand  le  buffer
              d’entrée est plein.  Linux n’implémente pas ce bit, et considère
              qu’il est toujours actif.

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

       NLDLY  Délai du saut de ligne. Les valeurs sont NL0 et NL1.

       CRDLY  Délai du retour chariot.  Les valeurs sont  CR0,  CR1,  CR2,  ou
              CR3.

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

       BSDLY  Délai du retour en arrière (baskspace).  Les valeurs sont BS0 ou
              BS1 (n’a jamais été implémenté).

       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.

       Constantes pour l’attribut c_cflag :

       CBAUD  (Pas dans POSIX) masque binaire des vitesses (4+1 bits).

       BAUDEX (Pas  dans  POSIX)  masque  binaire  étendu des vitesses (1 bit)
              inclus dans CBAUD.

       (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 Parité impaire en entrée et sortie.

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

       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.

       CRTSCTS
              (Pas dans Posix) Contrôle de flux RTS/CTS.

       Constantes pour l’attribut c_lflag :

       ISIG   Lorsqu’un signal INTR, QUIT, SUSP, ou DSUSP arrivent,  engendrer
              le signal correspondant.

       ICANON Mode   canonique.   Ceci  permet  l’utilisation  des  caractères
              spéciaux EOF, EOL, EOL2, ERASE, KILL, LNEXT, REPRINT, STATUS, et
              WERASE, et configure les buffers par ligne.

       XCASE  (Pas  dans Posix, non supporté sous Linux) Si ICANON est indiqué
              également, le terminal est en mode  majuscule  uniquement.   Les
              entrées  sont converties en minuscules, sauf pour les caractères
              précédes par  \.  En  sortie,  les  caractères  majuscules  sont
              précédes  par \ et les minuscules sont converties en majuscules.

       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.

       ECHOPRT
              (Pas  dans  Posix)  Si  ICANON  et IECHO sont aussi activés, les
              caractères sont imprimés avant leur effacement. (?)

       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.

       DEFECHO
              (Pas dans Posix) N’effectuer l’écho que lorsque le caractère est
              lu.

       FLUSHO (Pas  dans  Posix,  non supporté sous Linux) Le buffer de sortie
              est vidé. Cet attribut est déclenché  en  tappant  le  caractère
              DISCARD.

       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 supporté sous Linux) Tous les caractères de
              la  file d’entrée sont réimprimés quand le caractère suivant est
              lu. (bash utilise ceci pour la complétion de commande.)

       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   soit
              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.  Celui
              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  buffer
              vers  le  programme lecteur sans attendre la fin de ligne.  S’il
              s’agit du premier caractère de la ligne, le read() 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 supporté sous Linux ; 0, NUL), Carctère
              de basculement (utilisé uniquement par sh).

       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 supporté 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 support le
              contrôle des jobs, et non transmis en entrée.

       VLNEXT (Pas dans Posix ;  026,  SYN,  Ctrl-V),  Protègle  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  supporté sous Linux ; 017, SI, Ctrl-O).
              Bascule start/stop pour ignorer les  caractères  en  attente  de
              sortie.   Reconnu  quand  IEXTEN  est  actif, et pas transmis en
              entrée.

       VSTATUS
              (Pas dans Posix, non supporté sous  Linux ;  024,  DC4,  Ctrl-T)
              Interrogation d’état.

       Ces valeurs sont toutes différentes, sauf VTIME, 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é par sa
       valeur de temporisation. MIN représente le nombre mini de caractères  à
       recevoir pour satisfaire une lecture. TIME est une valeur en dixième de
       seconde. Quand ils sont tout dexu  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 TILME 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 supporte par) 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.

       tcsendbreak() transmet un flux continu de bits à zéro pendant une dure
       donnée  si  le  terminal utilise une transmission série asynchrone.  Si
       dure vaut zéro, les bits à  zéro  sont  émis  pendant  au  moins  0.25
       seconde,  et pas plus de 0.5 seconde.  Si dure 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’effecte 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 a 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.

       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.

       cfmakeraw fixe les attributs du terminal 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;

       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 d’état des lignes de contrôle du
       modem.  Normalement, ceci devrait déconnecter la ligne.  CBAUDEX est un
       masque  pour  les  vitesses  supérieures à celles définies dans POSIX.1
       (supérieures ou égales à 57600).   Ainsi,  B57600  &  CBAUDEX  est  non
       nulle.

       cfgetispeed()  renvoie  la  vitesse  d’entrée stockée dans la structure
       termios.

       cfsetispeed() fixe  la  vitesse  d’entrée  stockée  dans  la  structure
       termios  à  la valeur speed.  Si la vitesse d’entrée est mise à 0, elle
       prendra la même valeur que la vitesse de sortie.

VALEURS RENVOYÉES

       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.

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 dure non-nulle avec  tcsendbreak  est  variable.   SunOS
       indique  une break pendant dure*N secondes, où N est au moins 0.25, et
       au plus 0.5.  Linux, AIX, DU,  Tru64  envoie  un  break  pendant  dure
       millisecondes.   FreeBSD,  NetBSD,  HP-UX  et  MacOS ignorent la valeur
       dure.  Sous Solaris et Unixware, tcsendbreak avec une dure non-nulle,
       se comporte comme tcdrain.

VOIR AUSSI

       stty(1), setserial(8)

TRADUCTION

       Christophe Blaess, 1996-2003.