TERMIOS(3)         Manuel du programmeur Linux         TERMIOS(3)


NOM
       termios,   tcgetattr,   tcsetattr,  tcsendbreak,  tcdrain,
       tcflush,  tcflow,  cfmakeraw,  cfgetospeed,   cfgetispeed,
       cfsetispeed, cfsetospeed, tcgetpgrp, tcsetpgrp - Consulter
       ou indiquer les attributs de  terminaux,  le  contrôle  de
       ligne,  la  vitesse de transmission et le GID du processus
       en avant-plan sur un 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 cfgetospeed (struct termios *termios_p);

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

       speed_t cfgetispeed (struct termios *termios_p);

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

       pid_t tcgetpgrp (int fd);

       int tcsetpgrp (int fd, pid_t pgrpid);

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.









Linux                    29 Novembre 1996                       1





TERMIOS(3)         Manuel du programmeur Linux         TERMIOS(3)


       Cette structure contient 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é, considérer un signal BREAK
              en entrée comme un caractère \0,  sinon  déclencher
              SIGINT à son arrivée.

       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 for­
              mat 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  Transformer les majuscules en minuscules en entrée.

       IXON   Valider le contrôle de flux XON/XOFF en sortie.

       IXANY  Valider  le  redémarrage  du  flux  de  sortie  par
              n'importe quel caractère.

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

       IMAXBEL
              Faire sonner le terminal quand le  buffer  d'entrée
              est plein.

       Constantes pour l'attribut c_oflag :

       OPOST  enable implementation-defined output processing

       OLCUC  Convertir les minuscules en majuscules en sortie.



Linux                    29 Novembre 1996                       2





TERMIOS(3)         Manuel du programmeur Linux         TERMIOS(3)


       ONLCR  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 les
              délais, plutôt qu'un délai temporisé.

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

       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 :

       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  (rac­
              crochement).

       CLOCAL Ignorer les signaux de contrôle du modem.

       CIBAUD Vitesse d'entrée (inutilisée).



Linux                    29 Novembre 1996                       3





TERMIOS(3)         Manuel du programmeur Linux         TERMIOS(3)


       CRTSCTS
              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  car­
              actères  spéciaux  EOF,  EOL,  EOL2,  ERASE,  KILL,
              REPRINT,  STATUS,  et  WERASE,  et  configure   les
              buffers par ligne.

       XCASE  Si ICANON est indiqué également, le terminal est en
              mode majuscule uniquement.  Les entrées  sont  con­
              verties  en  minuscules,  sauf  pour les caractères
              précédes par \. En sortie,  les  caractères  majus­
              cules  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 dis­
              pose d'un  écho  local,  même  si  ECHO  n'est  pas
              activé.

       ECHOCTL
              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
              Si ICANON et IECHO sont  aussi  activés,  les  car­
              actères sont imprimés avant leur effacement. (?)

       ECHOKE Si  ICANON  est  également  activé,  la touche KILL
              efface chaque caractère de la ligne, comme  indiqué
              par ECHOE et ECHOPRT.

       FLUSHO 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



Linux                    29 Novembre 1996                       4





TERMIOS(3)         Manuel du programmeur Linux         TERMIOS(3)


              vidage de la file d'entrée durant les signaux  SIG­
              SUSP.

       TOSTOP Envoie  le  signal SIGTTOU au groupe d'un processus
              en arrière-plan essayant d'écrire sur son  terminal
              de contrôle.

       PENDIN 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 enable implementation-defined input processing.

       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 pro­
       cessus 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é  trans­
              mises.   Cette  fonction devrait être utilisée pour
              toute modification de paramètre affectant les  sor­
              ties.

       TCSAFLUSH
              Les  modifications  sont  effectuées lorsque toutes
              les opérations d'écriture sur fd auront été  trans­
              mises.  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 pen­
       dant une durée donnée si le terminal utilise une transmis­
       sion  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 durée*N secondes, avec N valant au moins 0.25,  et
       pas plus de 0.5.

       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.



Linux                    29 Novembre 1996                       5





TERMIOS(3)         Manuel du programmeur Linux         TERMIOS(3)


       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_selec­
       tor:

       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 termi­
              nal 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 util­
       isant 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;



Linux                    29 Novembre 1996                       6





TERMIOS(3)         Manuel du programmeur Linux         TERMIOS(3)


       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  con­
       nexion.   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.

       tcgetpgrp() renvoie l'ID de groupe de processus du  groupe
       en avant-plan, ou -1 en cas d'erreur.

       tcsetpgrp()  fixe  l'ID de groupe de processus à la valeur
       pgrpid.  pgrpid doit être l'ID d'un groupe de processus de
       la même session.

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.



Linux                    29 Novembre 1996                       7





TERMIOS(3)         Manuel du programmeur Linux         TERMIOS(3)


       tcgetpgrp()  renvoie l'ID de groupe de processus du groupe
       en avant-plan, ou -1 en cas d'erreur.

       Toutes les autres fonctions renvoient

       0      si elle réussissent, et

       -1     si elles échouent, auquel  cas  errno  contient  le
              code d'erreur.

VOIR AUSSI
       setserial(8)


TRADUCTION
       Christophe Blaess, 1997.









































Linux                    29 Novembre 1996                       8