termios | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
NOM | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
SYNOPSIS | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
#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 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 speed); int cfsetospeed (struct termios * termios_p, speed_t speed); int cfsetspeed(struct termios *termios_p, speed_t speed);
Exigences de macros de test de fonctionalités pour la glibc (voir feature_test_macros(7)) :
DESCRIPTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
La structure termios | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 contrôle */
Les valeurs qui peuvent être affectées à ces champs sont décrites plus loin. Dans le cas des quatre premiers champs masques de bits, les définitions de certains des attributs associés qui peuvent être positionnés ne sont exposés que si une macro spécifique de test de fonctionnalités (voir feature_test_macros(7)) est définie, comme indiquée entre crochets (« [] »).
Dans les descriptions plus loin, « 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 partie de l'extension XSI.
Constante pour l'attribut c_iflag :
Constantes POSIX.1 pour l'attribut c_oflag :
Les autres constantes pour c_oflag sont définies dans POSIX.1-2001 sauf indication contraire.
Constantes pour l'attribut c_cflag :
(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).
Constantes pour l'attribut c_lflag : [nécessite _BSD_SOURCE ou _SVID_SOURCE]
Le tableau c_cc définit des caractères de contrôle spéciaux. Les symboles (valeurs initiales) et significations sont :
Ces valeurs sont toutes différentes, sauf VTIME et 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ée par sa valeur de temporisation. Pour une explication de VMIN et VTIME, voir la description du mode canonique plus loin.
Récupérer et modifier les paramètres du terminal | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 prenne pas en charge) en lisant la structure termios pointée par termios_p. optional_actions précise QUAND les changements auront lieu :
Mode canonique et non canonique | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
En mode canonique :
Dans le mode non canonique, l'entrée est immédiatement disponible (sans que l'utilisateur ait besoin de saisir un caractère délimiteur de ligne), et l'édition de ligne est désactivée. Les valeurs MIN de (c_cc[VMIN]) et TIME de (c_cc[VTIME]) déterminent les circonstances dans lesquelles un read(2) se termine ; il y a quatre cas distincts :
Mode brut | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
cfmakeraw() configure le terminal dans un mode similaire au mode « raw » de l'ancien pilote de terminal version 7 : l'entrée est disponible caractère par caractère, le mode écho est désactivé de même que tous les traitements particuliers des caractères en entrée et en sortie. Les attributs du terminal sont configurés 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 | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 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'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 :
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 :
Lors de l'ouverture d'un terminal, ni ses sorties, ni ses entrées ne sont suspendues.
Vitesse de la ligne | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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.
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 B230400La vitesse nulle, B0, est utilisée pour terminer une connexion. Si B0 est indiquée, il n'y a aucune garantie sur l'é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, qui doit être spécifiée comme l'une des constantes Bnnn indiquées plus haut pour cfsetospeed(). Si la vitesse d'entrée est mise à 0, elle prendra la même valeur que la vitesse de sortie.
cfsetspeed() est une extension BSD 4.4. Elle prend les mêmes arguments que cfsetispeed(), et permet de configurer les vitesses d'entrée et de sortie.
VALEUR RENVOYÉE | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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
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.
CONFORMITÉ | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
cfmakeraw() et cfsetspeed() ne sont pas standards mais sont disponibles sur BSD.
NOTES | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
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 envoie 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().
VOIR AUSSI | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
TRADUCTION | Début | Précédent | Suivant | Sommaire | Préc.page.lue | Accueil |
Ce document est une traduction réalisée par Christophe Blaess <http://www.blaess.fr/christophe/> le 29 novembre 1996 et révisée le 8 janvier 2008.
L'équipe de traduction a fait le maximum pour réaliser une adaptation française de qualité. La version anglaise la plus à jour de ce document est toujours consultable via la commande : « LANG=C man 3 termios ». N'hésitez pas à signaler à l'auteur ou au traducteur, selon le cas, toute erreur dans cette page de manuel.
Sommaire | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
Table des mots clés | Début | Suivant | Sommaire | Préc.page.lue | Accueil |
BRKINT | La structure termios |
BSDLY | La structure termios |
CBAUD | La structure termios |
CBAUDEX | La structure termios |
CIBAUD | La structure termios |
CLOCAL | La structure termios |
CMSPAR | La structure termios |
CRDLY | La structure termios |
CREAD | La structure termios |
CRTSCTS | La structure termios |
CSIZE | La structure termios |
CSTOPB | La structure termios |
DEFECHO | La structure termios |
ECHO | La structure termios |
ECHOCTL | La structure termios |
ECHOE | La structure termios |
ECHOK | La structure termios |
ECHOKE | La structure termios |
ECHONL | La structure termios |
ECHOPRT | La structure termios |
FFDLY | La structure termios |
FLUSHO | La structure termios |
HUPCL | La structure termios |
ICANON | La structure termios |
ICRNL | La structure termios |
IEXTEN | La structure termios |
IGNBRK | La structure termios |
IGNCR | La structure termios |
IGNPAR | La structure termios |
IMAXBEL | La structure termios |
INLCR | La structure termios |
INPCK | La structure termios |
ISIG | La structure termios |
ISTRIP | La structure termios |
IUCLC | La structure termios |
IUTF8 (Depuis Linux 2.6.4) | La structure termios |
IXANY | La structure termios |
IXOFF | La structure termios |
IXON | La structure termios |
LOBLK | La structure termios |
NLDLY | La structure termios |
NOFLSH | La structure termios |
OCRNL | La structure termios |
OFDEL | La structure termios |
OFILL | La structure termios |
OLCUC | La structure termios |
ONLCR | La structure termios |
ONLRET | La structure termios |
ONOCR | La structure termios |
OPOST | La structure termios |
PARENB | La structure termios |
PARMRK | La structure termios |
PARODD | La structure termios |
PENDIN | La structure termios |
TABDLY | La structure termios |
TCIFLUSH | Contrôle de la ligne |
TCIOFF | Contrôle de la ligne |
TCIOFLUSH | Contrôle de la ligne |
TCION | Contrôle de la ligne |
TCOFLUSH | Contrôle de la ligne |
TCOOFF | Contrôle de la ligne |
TCOON | Contrôle de la ligne |
TCSADRAIN | Récupérer et modifier les paramètres du terminal |
TCSAFLUSH | Récupérer et modifier les paramètres du terminal |
TCSANOW | Récupérer et modifier les paramètres du terminal |
TOSTOP | La structure termios |
VDISCARD | La structure termios |
VDSUSP | La structure termios |
VEOF | La structure termios |
VEOL | La structure termios |
VEOL2 | La structure termios |
VERASE | La structure termios |
VINTR | La structure termios |
VKILL | La structure termios |
VLNEXT | La structure termios |
VMIN | La structure termios |
VQUIT | La structure termios |
VREPRINT | La structure termios |
VSTART | La structure termios |
VSTATUS | La structure termios |
VSTOP | La structure termios |
VSUSP | La structure termios |
VSWTCH | La structure termios |
VTDLY | La structure termios |
VTIME | La structure termios |
VWERASE | La structure termios |
XCASE | La structure termios |