termios(3) Library Functions Manual termios(3) NOM termios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow, cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed -- Configuration du terminal BIBLIOTHEQUE Bibliotheque C standard (libc, -lc) SYNOPSIS #include #include int tcgetattr(int fd, struct termios *termios_p); int tcsetattr(int fd, int optional_actions, const struct termios *termios_p); int tcsendbreak(int fd, int duree); int tcdrain(int fd); int tcflush(int fd, int queue_selector); int tcflow(int fd, int action); void cfmakeraw(struct termios *termios_p); speed_t cfgetispeed(const struct termios *termios_p); speed_t cfgetospeed(const struct termios *termios_p); int cfsetispeed(struct termios *termios_p, speed_t 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 fonctionnalites pour la glibc (consulter feature_test_macros(7)) : cfsetspeed(), cfmakeraw() : Depuis la glibc 2.19 : _DEFAULT_SOURCE glibc 2.19 et anterieures : _BSD_SOURCE DESCRIPTION Les fonctions termios etablissent une interface generale pour les terminaux, permettant de controler les ports de communication asynchrone. La structure termios Plusieurs fonctions decrites 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'entree */ tcflag_t c_oflag; /* modes de sortie */ tcflag_t c_cflag; /* modes de controle */ tcflag_t c_lflag; /* modes locaux */ cc_t c_cc[NCCS]; /* caracteres speciaux */ Les valeurs qui peuvent etre mises dans ces membres sont decrites ci-dessous. Dans le cas des quatre premiers membres, les definitions de certains des modes associes qui peuvent etre utilises ne sont exposes que si une macro est definie pour des tests specifiques (consultez feature_test_macros(7)), comme indique entre crochets (<< [] >>). Dans les descriptions ci-dessous, << pas dans POSIX >> signifie que la valeur n'est pas specifiee dans POSIX.1-2001, et << XSI >> signifie que la valeur est specifiee dans POSIX.1-2001 comme faisant partie de l'extension XSI. Constantes pour l'attribut c_iflag : IGNBRK Ignorer les signaux BREAK en entree. BRKINT Si IGNBRK est indique, un signal BREAK en entree est ignore. S'il n'est pas indique, mais si BRKINT est present, alors un BREAK videra les files d'attente en entree et sortie, et si le terminal controle un groupe de processus au premier plan, un signal SIGINT sera envoye a ce groupe. Si ni IGNBRK ni BRKINT ne sont indiques, un caractere BREAK sera lu comme un caractere NULL (<< \0 >>), sauf si PARMRK est present, auquel cas il sera lu comme une sequence \377 \0 \0. IGNPAR Ignorer les erreurs de format et de parite. PARMRK Si ce bit est defini, les octets d'entree avec des erreurs de format et de parite sont marques lors de leur passage au programme. Ce bit est signifiant seulement quand INPCK est defini et que IGNPAR ne l'est pas. Deux octets precedents \377 et \0 marquent les octets erronees. Donc le programme lit en fait trois octets pour un octet errone recu du terminal. Si un octet valable a la valeur \377 et si ISTRIP (voir ci-dessous) n'est pas defini, le programme pourrait le confondre avec le prefixe qui marque une erreur de parite. Aussi, un octet \377 valable est passe au programme sous la forme de deux octets \377 \377 dans ce cas. Si ni IGNPAR ni PARMRK ne sont indiques, un caractere contenant une erreur de parite ou de format est lu comme \0. INPCK Valider la verification de parite en entree. ISTRIP Eliminer le huitieme bit. INLCR Convertir NL en CR en entree. IGNCR Ignorer CR en entree. ICRNL Convertir CR en NL en entree, sauf si IGNCR est indique. IUCLC (Pas dans POSIX) Transformer les capitales en minuscules en entree. IXON Valider le controle de flux XON/XOFF en sortie. IXANY (XSI) La sortie bloquee sera redemarree en tapant n'importe quel caractere. Le defaut est de ne redemarrer la sortie qu'avec le caractere START. IXOFF Valider le controle de flux XON/XOFF en entree. IMAXBEL (Pas dans POSIX) Faire sonner le terminal quand le tampon d'entree est plein. Linux n'implemente pas ce bit, et considere qu'il est toujours actif. IUTF8 (depuis Linux 2.6.4) (Pas dans POSIX) L'entree est en UTF-8 ; cela permet au caractere d'effacement de fonctionner correctement dans le mode << cooked >> (pretraitement). Constantes pour l'attribut c_oflag : OPOST Traitement en sortie dependant de l'implementation. 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 emettre de CR en colonne 0. ONLRET Le caractere NL est presume remplir la fonction de retour charriot ; l'idee du noyau de la presente colonne est definie a 0 apres a la fois NL et CR. OFILL Utiliser des caracteres de remplissage pour le delai, plutot qu'une temporisation. OFDEL Le caractere de remplissage est ASCII DEL (0177). Sinon c'est ASCII NUL (<< \0 >>). (Non implemente dans Linux) NLDLY Masque du delai de saut de ligne. Les valeurs sont NL0 et NL1. [Necessite _BSD_SOURCE ou _SVID_SOURCE ou _XOPEN_SOURCE] CRDLY Masque du delai de retour chariot. Les valeurs sont CR0, CR1, CR2 ou CR3. [Necessite _BSD_SOURCE ou _SVID_SOURCE ou _XOPEN_SOURCE] TABDLY Masque du delai de tabulation horizontale. Les valeurs sont TAB0, TAB1, TAB2, TAB3 (ou XTABS, mais voir la section BOGUES). Une valeur TAB3 , c'est-a-dire XTABS, convertit les tabulations en espaces (positions toutes les huit colonnes). [Necessite _BSD_SOURCE ou _SVID_SOURCE ou _XOPEN_SOURCE] BSDLY Masque du delai de retour en arriere (backspace). Les valeurs sont BS0 ou BS1 (n'a jamais ete implemente). [Necessite _BSD_SOURCE ou _SVID_SOURCE ou _XOPEN_SOURCE] VTDLY Masque du delai de tabulation verticale. Les valeurs sont VT0 ou VT1. FFDLY Masque du delai de saut de page. Les valeurs sont FF0 ou FF1. [Necessite _BSD_SOURCE ou _SVID_SOURCE ou _XOPEN_SOURCE] Constantes pour l'attribut c_cflag : CBAUD (Pas dans POSIX) Masque des vitesses (4+1 bits). [Necessite _BSD_SOURCE ou _SVID_SOURCE] CBAUDEX (Pas dans POSIX) Masque etendu des vitesses (1 bit) inclus dans CBAUD. [Necessite _BSD_SOURCE ou _SVID_SOURCE] POSIX dit que la vitesse est stockee dans une structure termios sans dire precisement ou, et fournit cfgetispeed() et cfsetispeed() pour la lire ou l'ecrire. Certains systemes utilisent les bits de CBAUD dans c_cflag, d'autres systemes utilisent des champs distincts, par exemple sg_ispeed et sg_ospeed. CSIZE Masque de longueur des caracteres. Les valeurs sont CS5, CS6, CS7 ou CS8. CSTOPB Utiliser deux bits de stop plutot qu'un. CREAD Valider la reception. PARENB Valider le codage de parite en sortie, et la verification de parite en entree. PARODD Si le bit PARODD est positionne, la parite en entree et sortie sera impaire ; sinon une parite paire est utilisee. HUPCL Abaisser les signaux de controle du modem lorsque le dernier processus referme le peripherique (raccrochage). CLOCAL Ignorer les signaux de controle du modem. LOBLK (Pas POSIX) Bloquer la sortie depuis un niveau de shell non concurrent. Utilise par shl (shell layers). (Non implemente dans Linux) CIBAUD (Pas dans POSIX) Masque des vitesses d'entree. Les bits pour CIBAUD sont les memes que ceux de CBAUD, decales a gauche de IBSHIFT bits. [Necessite _BSD_SOURCE ou _SVID_SOURCE] (Non implemente dans la glibc, pris en charge dans Linux au moyen des ioctls TCGET* et TCSET* ; voir ioctl_tty(2)) CMSPAR (Pas dans POSIX) Parite fixe (marque/espace - gere par certains peripheriques serie) ; si PARODD est positionne, le bit de parite est toujours a 1 ; si PARODD n'est pas positionne, le bit de parite est toujours a 0. [Necessite _BSD_SOURCE ou _SVID_SOURCE] CRTSCTS (Pas dans POSIX) Controle de flux RTS/CTS. [Necessite _BSD_SOURCE ou _SVID_SOURCE] Constantes pour l'attribut c_lflag : ISIG Lorsqu'un caractere INTR, QUIT, SUSP ou DSUSP arrive, engendrer le signal correspondant. ICANON Active le mode canonique (decrit ci-dessous). XCASE (Pas dans POSIX, non gere sous Linux) Si ICANON est indique egalement, le terminal est en mode majuscule uniquement. Les entrees sont converties en minuscules, sauf pour les caracteres precedes par \. En sortie, les caracteres majuscules sont precedes par \ et les minuscules sont converties en majuscules. (Necessite _BSD_SOURCE, _SVID_SOURCE ou _XOPEN_SOURCE.) ECHO Afficher les caracteres saisis. ECHOE Si ICANON est egalement active, la touche ERASE efface le caractere precedent, et WERASE efface le mot precedent. ECHOK Si ICANON est egalement active, la touche KILL efface la ligne en cours. ECHONL Si ICANON est egalement active, afficher le caractere NL meme si ECHO n'est pas active. ECHOCTL (Pas dans POSIX) Si ECHO est egalement active, les caracteres speciaux du terminal autres que TAB, NL, START, et STOP sont representes par ^X, ou X est le caractere dont le code ASCII est superieur de 0x40 a celui du caractere special. Par exemple, 0x08 (BS) est represente par ^H. [Necessite _BSD_SOURCE ou _SVID_SOURCE] ECHOPRT (Pas dans POSIX) Si ICANON et ECHO sont aussi actives, les caracteres sont imprimes lorsqu'ils sont effaces. [Necessite _BSD_SOURCE ou _SVID_SOURCE] ECHOKE (Pas dans POSIX) Si ICANON est egalement active, la touche KILL efface chaque caractere de la ligne, comme indique par ECHOE et ECHOPRT. [Necessite _BSD_SOURCE ou _SVID_SOURCE] DEFECHO (Pas dans POSIX) N'effectuer l'affichage que lorsque le caractere est lu. (Non implemente dans Linux) FLUSHO (Pas dans POSIX, non gere sous Linux) Le tampon de sortie est vide. Cet attribut est declenche en tapant le caractere DISCARD. [Necessite _BSD_SOURCE ou _SVID_SOURCE] NOFLSH Desactiver le vidage des files d'entree et de sortie pendant la creation des signaux pour les caracteres INT, QUIT et SUSP. TOSTOP Envoyer le signal SIGTTOU au groupe de processus d'un processus en arriere-plan essayant d'ecrire sur son terminal de controle. PENDIN (Pas dans POSIX, non gere sous Linux) Tous les caracteres de la file d'entree sont reimprimes quand le caractere suivant est lu. (bash(1) utilise cela pour la completion de commande) [Necessite _BSD_SOURCE ou _SVID_SOURCE] IEXTEN Traitement de l'entree dependant de l'implementation. Cet attribut, tout comme ICANON, doit etre actif pour que les caracteres speciaux EOL2, LNEXT, REPRINT et WERASE soient interpretes, et pour que l'attribut IUCLC prenne effet. Le tableau c_cc definit des caracteres speciaux. Les symboles (valeurs initiales) et significations sont : VDISCARD (Pas dans POSIX, non gere sous Linux ; 017, SI, Ctrl-O) Bascule start/stop pour ignorer les caracteres en attente de sortie. Reconnu quand IEXTEN est actif, et pas transmis en entree. VDSUSP (Pas dans POSIX et non gere sous Linux ; 031, EM, Ctrl-Y) Caractere de suspension retardee (DSUSP). Envoie le signal SIGTSTP quand le caractere est lu par le programme utilisateur. Reconnu quand IEXTEN et ISIG sont actifs, et quand le systeme geree le controle des processus, et non transmis en entree. VEOF (004, EOT, Ctrl-D) Caractere de fin de fichier (EOF). Plus precisement : ce caractere oblige l'envoi du contenu du tampon vers le programme lecteur sans attendre la fin de ligne. S'il s'agit du premier caractere de la ligne, l'appel a read(2) renvoie zero dans le programme appelant, ce qui correspond a une fin de fichier. Reconnu quand ICANON est actif, et pas transmis en entree. VEOL (0, NUL) Caractere fin de ligne supplementaire (EOL). Reconnu quand ICANON est actif. VEOL2 (Pas dans POSIX ; 0, NUL) Encore un autre caractere fin de ligne (EOL2). Reconnu quand ICANON est actif. VERASE (0177, DEL, rubout, ou 010, BS, Ctrl-H ou encore #) Caractere d'effacement (ERASE). Cela efface le caractere precedent pas encore efface, mais ne revient pas en deca d'EOF ou du debut de ligne. Reconnu quand ICANON est actif, et n'est pas transmis en entree. VINTR (003, ETX, Ctrl-C, ou encore 0177, DEL, rubout) Caractere d'interruption (INTR). Envoie le signal SIGINT. Reconnu quand ISIG est present, et n'est pas transmis en entree. VKILL (025, NAK, Ctrl-U ou Ctrl-X, ou encore @) Caractere Kill (KILL). Il efface tous les caracteres en entree, jusqu'au dernier EOF ou debut de ligne. Reconnu quand ICANON est actif, et pas transmis en entree. VLNEXT (Pas dans POSIX ; 026, SYN, Ctrl-V) Suivant litteral (LNEXT). Protege le caractere suivant en lui supprimant toute signification speciale. Reconnu quand IEXTEN est actif, et pas transmis en entree. VMIN Nombre minimal de caracteres lors d'une lecture en mode non canonique (MIN). VQUIT (034, FS, Ctrl-\) Caractere Quit (QUIT). Envoie le signal SIGQUIT. Reconnu quand ISIG est present, et n'est pas transmis en entree. VREPRINT (Pas dans POSIX ; 022, DC2, Ctrl-R) Reafficher les caracteres pas encore lus (REPRINT). Reconnu quand ICANON et IEXTEN sont actifs, et pas transmis en entree. VSTART (021, DC1, Ctrl-Q) Caractere de demarrage (START). Relance la sortie interrompue par un caractere d'arret. Reconnu quand IXON est actif, et pas transmis en entree. VSTATUS (Pas dans POSIX, non gere sous Linux ; 024, DC4, Ctrl-T). Caractere d'etat (STATUS). Affiche sur le terminal des informations sur l'etat, incluant l'etat du processus en premier plan et la quantite de temps CPU qu'il a consomme. Envoie aussi un signal SIGINFO (not gere par Linux) au groupe du processus de premier plan. VSTOP (023, DC3, Ctrl-S) Caractere d'arret (STOP). Interrompt la sortie jusqu'a la pression d'un caractere de demarrage. Reconnu quand IXON est actif, et pas transmis en entree. VSUSP (032, SUB, Ctrl-Z) Caractere de suspension (SUSP). Envoie le signal SIGTSTP. Reconnu quand ISIG est actif, et pas transmis en entree. VSWTCH (Pas dans POSIX et non gere sous Linux ; 0, NUL) Caractere de basculement (SWTCH). Utilise par System V pour basculer les shells dans des calques (shell layers), notion qui a precede le controle des travaux du shell. VTIME Delai en dixiemes 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 entree. Un caractere special de terminal isole peut etre desactive en positionnant la valeur de l'element c_cc correspondant a _POSIX_VDISABLE. Les valeurs d'indices ci-dessus sont toutes differentes, sauf VTIME et VMIN qui peuvent avoir la meme valeur que VEOL et VEOF respectivement. En mode non canonique, la signification d'un caractere special est remplacee par sa valeur de temporisation. Pour des explications sur VMIN et VTIME, consultez la description du mode non canonique ci-dessous. Recuperer et changer les parametres du terminal tcgetattr() recupere les parametres associes a l'objet reference par fd et les stocke dans la structure termios pointee par termios_p. Cette fonction peut etre appelee par un processus en arriere-plan. Neanmoins, les attributs de terminal peuvent etre modifies par la suite par le processus au premier plan. tcsetattr() definit les parametres du terminal (a moins que le materiel sous-jacent ne le gere pas) en lisant la structure termios pointee par termios_p. optional_actions precise quand les changements auront lieu : TCSANOW Les modifications sont effectuees immediatement. TCSADRAIN Les modifications sont effectuees lorsque toutes les operations d'ecriture sur fd auront ete transmises. Cette option devrait etre utilisee pour toute modification de parametre affectant les sorties. TCSAFLUSH Les modifications sont effectuees lorsque toutes les operations d'ecriture sur fd auront ete transmises. Les entrees qui n'ont pas ete traitees seront eliminees avant de faire les modifications. Mode canonique et non canonique La definition de l'attribut canonique ICANON dans c_lflag determine si le terminal est dans le mode canonique (ICANON positionne) ou non canonique (ICANON non positionne). Par defaut, ICANON est positionne. Dans le mode canonique : - L'entree est rendue disponible ligne a ligne. Une ligne d'entree est disponible quand un delimiteur de ligne (NL, EOL, EOL2 ou EOF au debut d'une ligne). Sauf dans le cas de EOF, le delimiteur de ligne est inclus dans le tampon renvoye par read(2). - L'edition des lignes est activee (ERASE, KILL ; et si le bit IEXTEN est positionne : WERASE, REPRINT, LNEXT). Un read(2) renverra au plus une ligne de l'entree ; si le read(2) a demande moins de caracteres que disponibles dans la ligne en cours, seuls les octets demandes seront lus, et les autres caracteres seront disponibles pour les read(2) suivants. - La longueur maximale de ligne est 4096 caracteres (y compris le caractere saut de ligne terminal) ; les lignes de plus de 4096 caracteres sont tronquees. Apres 4095 caracteres, le traitement de l'entree (par exemple le traitement de ISIG et ECHO*) se poursuit, mais les donnees entrees apres 4095 caracteres jusqu'a (mais sans l'inclure) un saut de ligne terminal sont abandonnees. Cela assure que le terminal peut toujours recevoir plus d'entrees jusqu'a ce que au moins une ligne puisse etre lue. Dans le mode non canonique, l'entree est disponible tout de suite (sans que l'utilisateur ait a taper de caractere delimiteur de ligne), aucun traitement de l'entree n'est effectue, et l'edition des lignes est desactivee. Le tampon de lecture acceptera seulement 4095 caracteres ; cela laisse l'espace necessaire pour un caractere saut de ligne si le mode d'entree devient canonique. La valeur des parametres MIN (c_cc[VMIN]) et TIME (c_cc[VTIME]) determine les circonstances dans lesquelles read(2) se termine ; il y a quatre cas differents : MIN == 0, TIME == 0 (lecture de scrutation (polling)) Si des donnees sont disponibles, read(2) renvoie immediatement le nombre d'octets disponibles ou le nombre d'octets demandes (le plus petit des deux). Si aucune donnee n'est disponible, read(2) renvoie 0. MIN > 0, TIME == 0 (lecture bloquante) read(2) est bloquant jusqu'a ce que MIN octets soient disponibles, puis renvoie jusqu'au nombre d'octet demandes. MIN == 0, TIME > 0 (lecture avec delai) TIME indique une limite de temps en dixieme de seconde. Le decompte du temps commence lors de l'appel a 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 donnees disponibles, read(2) renvoie 0. Si des donnees sont deja disponibles au moment de l'appel a read(2), l'appel se comporte comme si les donnees etaient recues immediatement apres l'appel. MIN > 0, TIME > 0 (lecture avec delai entre deux octets) TIME indique une limite de temps en dixieme de seconde. Quand un premier caractere est disponible en entree, la temporisation est demarree, puis remise a zero a chaque caractere recu. read(2) se termine quand une des conditions suivantes est vraie. - MIN octets ont ete recus. - Le delai entre deux octets est depasse. - Le nombre d'octets demandes par read(2) a ete recu (POSIX ne specifie pas cette condition de fin et d'autres implementations de read(2) ne se terminent pas dans ce cas). Comme la temporisation n'est demarree que lors de la reception du premier octet, au moins un octet sera lu. Si des donnees sont deja disponibles au moment de l'appel a read(2), l'appel se comporte comme si les donnees etaient recues immediatement apres l'appel. POSIX ne specifie pas si le reglage de l'attribut d'etat de fichier O_NONBLOCK est prioritaire sur les reglages de MIN et TIME. Si O_NONBLOCK est defini, un read(2) en mode non canonique pourrait s'arreter immediatement, quelque soit le reglage de MIN ou TIME. De plus, si aucune donnee n'est disponible, POSIX permet un read(2) en mode non canonique de renvoyer soit 0, soit -1 avec errno defini a EAGAIN. Mode brut cfmakeraw() place le terminal dans un mode proche du mode << raw >> de l'ancien pilote de terminal version 7 : l'entree est disponible caractere par caractere, il n'y a pas d'echo ni de traitement particulier des caracteres d'entree ou sortie. Les attributs du terminal sont definis 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; Controle de la ligne tcsendbreak() transmet un flux continu de bits a zero pendant une duree donnee si le terminal utilise une transmission serie asynchrone. Si duree vaut zero, les bits a zero sont emis pendant au moins 0,25 seconde, et pas plus de 0,5 seconde. Si duree est non nulle, l'emission se fera pendant un temps dependant de l'implementation. Si le terminal n'est pas connecte avec une liaison serie asynchrone, tcsendbreak() n'effectue aucune action. tcdrain() attend que toutes les ecritures sur l'objet reference par fd aient ete transmises. tcflush() elimine toutes les ecritures sur l'objet fd pas encore transmises, ainsi que les donnees recues mais pas encore lues, ceci en fonction de la valeur de queue_selector : TCIFLUSH efface les donnees recues mais non lues. TCOFLUSH efface les donnees ecrites mais non transmises. TCIOFLUSH efface a la fois les donnees recues non lues, et les donnees ecrites non transmises. tcflow() suspend la transmission ou la reception des donnees sur l'objet reference par fd, en fonction de la valeur de action : TCOOFF suspend les transmissions. TCOON redemarre les transmissions suspendues. TCIOFF envoie un caractere STOP, ce qui demande au terminal de suspendre toute transmission de donnees vers le systeme. TCION envoie un caractere START, ce qui redemarre la transmission des donnees depuis le terminal vers le systeme. Lors de l'ouverture d'un terminal, ni ses sorties ni ses entrees ne sont suspendues. Vitesse de la ligne Il est possible d'utiliser les fonctions suivantes pour lire ou ecrire la vitesse de communication du terminal, en utilisant la structure termios. Les modifications ne prennent effet que lorsque la fonction tcsetattr() a ete invoquee et qu'elle a reussi. Definir une vitesse B0 demande au modem de raccrocher. La vitesse reelle de communication correspondant a B38400 peut etre modifiee avec setserial(8). Les vitesses en entree et en sortie sont stockees dans la structure termios. cfgetospeed() renvoie la vitesse de sortie stockee dans la structure termios pointee par termios_p. cfsetospeed() definit la vitesse de sortie stockee dans la structure termios pointee par termios_p a la valeur vitesse, qui doit etre 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 differences entre les architectures, les applications portables devraient verifier si une constante particuliere Bnnn est definie avant de l'utiliser. La vitesse nulle, B0, est utilisee pour terminer une connexion. Si B0 est indiquee, il n'y a aucune garantie d'etat des lignes de controle du modem. Normalement, cela devrait deconnecter la ligne. CBAUDEX est un masque pour les vitesses superieures a celles definies dans POSIX.1 (superieures ou egales a 57600). Ainsi, B57600 & CBAUDEX est non nulle. Definir la vitesse a une valeur autre que celles definies par les constantes Bnnn est possible au moyen de l'ioctl TCSETS2 ; voir ioctl_tty(2). cfgetispeed() renvoie la vitesse d'entree stockee dans la structure termios. cfsetispeed() definit la vitesse d'entree stockee dans la structure termios a la valeur vitesse, qui doit etre specifiee a l'aide d'une des constantes Bnnn listees ci-dessus pour cfsetospeed(). Si la vitesse d'entree est mise a la constante litterale 0 (pas la constante symbolique B0), elle prendra la meme valeur que la vitesse de sortie. cfsetspeed() est une extension 4.4BSD. Elle prend les memes arguments que cfsetispeed(), et definit a la fois les vitesses d'entree et de sortie. VALEUR RENVOYEE cfgetispeed() renvoie la vitesse d'entree stockee dans la structure termios. cfgetospeed() renvoie la vitesse de sortie stockee dans la structure termios. Toutes les autres fonctions renvoient 0 si elles reussissent, -1 si elles echouent, auquel cas errno contient le code d'erreur. Notez que tcsetattr() indique une reussite si une des modifications peut etre realisee. Toutefois, pour effectuer plusieurs changements, il peut etre necessaire de faire suivre cet appel d'une invocation de tcgetattr() pour verifier que les modifications ont bien ete realisees. ATTRIBUTS Pour une explication des termes utilises dans cette section, consulter attributes(7). +---------------------------------+--------------------------+---------+ |Interface | Attribut | Valeur | +---------------------------------+--------------------------+---------+ |tcgetattr(), tcsetattr(), | Securite des threads | MT-Safe | |tcdrain(), tcflush(), tcflow(), | | | |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 systemes ulterieurs avaient une liste de vitesse de transmission ou l'on rencontrait, apres les valeurs de B0 a B9600, les deux constantes EXTA et EXTB (<< External A >> et << External B >>). De nombreux systemes etendent cette liste avec des vitesses bien plus rapides. L'effet d'une duree non nulle avec tcsendbreak() est variable. SunOS indique un break pendant duree * N secondes, ou N est au moins 0,25, et au plus 0,5. Linux, AIX, DU, Tru64 envoient un break pendant duree millisecondes. FreeBSD, NetBSD, HP-UX et MacOS ignorent la valeur duree. Sous Solaris et UnixWare, tcsendbreak() avec une duree 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 etait differente de TAB3 et etait ignoree par le code de discipline de ligne N_TTY du pilote du terminal en consequence (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 francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Pierre Giraud Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.06 31 octobre 2023 termios(3)