Index général des pages de man   Index Section man 3   Table des Matières de tcsetpgrp   Imprime la page de man tcsetpgrp en mode Texte   Recherche dans les pages de man   Page de man en français      Fonctions des bibliothèques (section 3)

tcsetpgrp

 
  

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. 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 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
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.
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 (raccrochement).
CLOCAL
Ignorer les signaux de contrôle du modem.
CIBAUD
Vitesse d'entrée (inutilisée).
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 caractè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 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
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 caractè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 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
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 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 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 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.

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.

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.

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.


Table des matières


Haut de page

© 1996-2000 Adaptation française "Christophe Blaess"