Man page - cfmakeraw(3)

Packages contains this manual

Available languages:

en fr ja

Manual

termios

NOM
BIBLIOTHÈQUE
SYNOPSIS
DESCRIPTION
La structure termios
Récupérer et changer les paramÚtres du terminal
Mode canonique et non canonique
Mode brut
ContrĂŽle de la ligne
Vitesse de la ligne
VALEUR RENVOYÉE
ATTRIBUTS
STANDARDS
HISTORIQUE
NOTES
BOGUES
VOIR AUSSI
TRADUCTION

NOM

termios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow, cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed — Configuration du terminal

BIBLIOTHÈQUE

BibliothĂšque C standard ( libc , -lc )

SYNOPSIS

#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 durée );
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 fonctionnalités pour la glibc (consulter feature_test_macros (7)) :

cfsetspeed (), cfmakeraw () :
Depuis la glibc 2.19 :
_DEFAULT_SOURCE
glibc 2.19 et antérieures :
_BSD_SOURCE

DESCRIPTION

Les fonctions termios établissent une interface générale pour les terminaux, permettant de contrÎler les ports de communication asynchrone.

La structure termios

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 spéciaux */

Les valeurs qui peuvent ĂȘtre mises dans ces membres sont dĂ©crites ci-dessous. Dans le cas des quatre premiers membres, les dĂ©finitions de certains des modes associĂ©s qui peuvent ĂȘtre utilisĂ©s ne sont exposĂ©s que si une macro est dĂ©finie pour des tests spĂ©cifiques (consultez feature_test_macros (7)), comme indiquĂ© entre crochets (« [] »).

Dans les descriptions ci-dessous, « 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 faisant partie de l’extension XSI.

Constantes pour l’attribut c_iflag :

IGNBRK

Ignorer les signaux BREAK en entrée.

BRKINT

Si IGNBRK est indiquĂ©, un signal 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 au premier plan, un signal SIGINT sera envoyĂ© Ă  ce groupe. Si ni IGNBRK ni BRKINT ne sont indiquĂ©s, un caractĂšre BREAK sera lu comme un caractĂšre NULL (« \0 »), 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 ce bit est dĂ©fini, les octets d’entrĂ©e avec des erreurs de format et de paritĂ© sont marquĂ©s lors de leur passage au programme. Ce bit est signifiant seulement quand INPCK est dĂ©fini et que IGNPAR ne l’est pas. Deux octets prĂ©cĂ©dents \377 et \0 marquent les octets erronĂ©es. Donc le programme lit en fait trois octets pour un octet erronĂ© reçu du terminal. Si un octet valable a la valeur \377 et si ISTRIP (voir ci-dessous) n’est pas dĂ©fini, le programme pourrait le confondre avec le prĂ©fixe qui marque une erreur de paritĂ©. Aussi, un octet \377 valable est passĂ© au programme sous la forme de deux octets \377 \377 dans ce cas.

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

Éliminer 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 capitales en minuscules en entrée.

IXON

Valider le contrĂŽle de flux XON/XOFF en sortie.

IXANY

(XSI) La sortie bloquĂ©e sera redĂ©marrĂ©e en tapant n’importe quel caractĂšre. Le dĂ©faut est de ne redĂ©marrer la sortie qu’avec le caractĂšre START.

IXOFF

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

IMAXBEL

(Pas dans POSIX) Faire sonner le terminal quand le tampon d’entrĂ©e est plein. Linux n’implĂ©mente pas ce bit, et considĂšre qu’il est toujours actif.

IUTF8 (depuis Linux 2.6.4)

(Pas dans POSIX) L’entrĂ©e est en UTF-8 ; cela permet au caractĂšre d’effacement de fonctionner correctement dans le mode « cooked » (prĂ©traitement).

Constantes pour l’attribut c_oflag :

OPOST

Traitement en sortie dĂ©pendant de l’implĂ©mentation.

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 émettre de CR en colonne 0.

ONLRET

Le caractĂšre NL est prĂ©sumĂ© remplir la fonction de retour charriot ; l’idĂ©e du noyau de la prĂ©sente colonne est dĂ©finie Ă  0 aprĂšs Ă  la fois NL et CR.

OFILL

Utiliser des caractĂšres de remplissage pour le dĂ©lai, plutĂŽt qu’une temporisation.

OFDEL

Le caractĂšre de remplissage est ASCII DEL (0177). Sinon c’est ASCII NUL (« \0 »). (Non implĂ©mentĂ© dans Linux)

NLDLY

Masque du délai de saut de ligne. Les valeurs sont NL0 et NL1 . [Nécessite _BSD_SOURCE ou _SVID_SOURCE ou _XOPEN_SOURCE ]

CRDLY

Masque du délai de retour chariot. Les valeurs sont CR0 , CR1 , CR2 ou CR3 . [Nécessite _BSD_SOURCE ou _SVID_SOURCE ou _XOPEN_SOURCE ]

TABDLY

Masque du dĂ©lai de tabulation horizontale. Les valeurs sont TAB0 , TAB1 , TAB2 , TAB3 (ou XTABS , mais voir la section BOGUES ). Une valeur TAB3 , c’est-Ă -dire XTABS, convertit les tabulations en espaces (positions toutes les huit colonnes). [NĂ©cessite _BSD_SOURCE ou _SVID_SOURCE ou _XOPEN_SOURCE ]

BSDLY

Masque du dĂ©lai de retour en arriĂšre (backspace). Les valeurs sont BS0 ou BS1 (n’a jamais Ă©tĂ© implĂ©mentĂ©). [NĂ©cessite _BSD_SOURCE ou _SVID_SOURCE ou _XOPEN_SOURCE ]

VTDLY

Masque du délai de tabulation verticale. Les valeurs sont VT0 ou VT1 .

FFDLY

Masque du délai de saut de page. Les valeurs sont FF0 ou FF1 . [Nécessite _BSD_SOURCE ou _SVID_SOURCE ou _XOPEN_SOURCE ]

Constantes pour l’attribut c_cflag :

CBAUD

(Pas dans POSIX) Masque des vitesses (4+1 bits). [Nécessite _BSD_SOURCE ou _SVID_SOURCE ]

CBAUDEX

(Pas dans POSIX) Masque étendu des vitesses (1 bit) inclus dans CBAUD . [Nécessite _BSD_SOURCE ou _SVID_SOURCE ]

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

Masque de 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

Si le bit PARODD est positionné, la parité en entrée et sortie sera impaire ; sinon une parité paire est utilisée.

HUPCL

Abaisser les signaux de contrÎle du modem lorsque le dernier processus referme le périphérique (raccrochage).

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 (shell layers). (Non implémenté dans Linux)

CIBAUD

(Pas dans POSIX) Masque des vitesses d’entrĂ©e. Les bits pour CIBAUD sont les mĂȘmes que ceux de CBAUD , dĂ©calĂ©s Ă  gauche de IBSHIFT bits. [NĂ©cessite _BSD_SOURCE ou _SVID_SOURCE ] (Non implĂ©mentĂ© dans la glibc, pris en charge dans Linux au moyen des ioctls TCGET * et TCSET * ; voir ioctl_tty (2))

CMSPAR

(Pas dans POSIX) ParitĂ© fixe (marque/espace – gĂ©rĂ© par certains pĂ©riphĂ©riques sĂ©rie) ; si PARODD est positionnĂ©, le bit de paritĂ© est toujours Ă  1 ; si PARODD n’est pas positionnĂ©, le bit de paritĂ© est toujours Ă  0. [NĂ©cessite _BSD_SOURCE ou _SVID_SOURCE ]

CRTSCTS

(Pas dans POSIX) ContrÎle de flux RTS/CTS. [Nécessite _BSD_SOURCE ou _SVID_SOURCE ]

Constantes pour l’attribut c_lflag :

ISIG

Lorsqu’un caractùre INTR, QUIT, SUSP ou DSUSP arrive, engendrer le signal correspondant.

ICANON

Active le mode canonique (décrit ci-dessous).

XCASE

(Pas dans POSIX, non géré 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édés par \. En sortie, les caractÚres majuscules sont précédés par \ et les minuscules sont converties en majuscules. (Nécessite _BSD_SOURCE , _SVID_SOURCE ou _XOPEN_SOURCE .)

ECHO

Afficher les 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Ă©, afficher le caractĂšre NL mĂȘme si ECHO n’est pas activĂ©.

ECHOCTL

(Pas dans POSIX) Si ECHO est Ă©galement activĂ©, les caractĂšres spĂ©ciaux du terminal autres que TAB, NL, START, et STOP sont reprĂ©sentĂ©s par ^X , oĂč X est le caractĂšre dont le code ASCII est supĂ©rieur de 0x40 Ă  celui du caractĂšre spĂ©cial. Par exemple, 0x08 (BS) est reprĂ©sentĂ© par ^H . [NĂ©cessite _BSD_SOURCE ou _SVID_SOURCE ]

ECHOPRT

(Pas dans POSIX) Si ICANON et ECHO sont aussi activĂ©s, les caractĂšres sont imprimĂ©s lorsqu’ils sont effacĂ©s. [NĂ©cessite _BSD_SOURCE ou _SVID_SOURCE ]

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 . [Nécessite _BSD_SOURCE ou _SVID_SOURCE ]

DEFECHO

(Pas dans POSIX) N’effectuer l’affichage que lorsque le caractĂšre est lu. (Non implĂ©mentĂ© dans Linux)

FLUSHO

(Pas dans POSIX, non géré sous Linux) Le tampon de sortie est vidé. Cet attribut est déclenché en tapant le caractÚre DISCARD. [Nécessite _BSD_SOURCE ou _SVID_SOURCE ]

NOFLSH

DĂ©sactiver le vidage des files d’entrĂ©e et de sortie pendant la crĂ©ation des signaux pour les caractĂšres INT, QUIT et SUSP.

TOSTOP

Envoyer le signal SIGTTOU au groupe de processus d’un processus en arriĂšre-plan essayant d’écrire sur son terminal de contrĂŽle.

PENDIN

(Pas dans POSIX, non gĂ©rĂ© sous Linux) Tous les caractĂšres de la file d’entrĂ©e sont rĂ©imprimĂ©s quand le caractĂšre suivant est lu. ( bash (1) utilise cela pour la complĂ©tion de commande) [NĂ©cessite _BSD_SOURCE ou _SVID_SOURCE ]

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 et WERASE soient interprĂ©tĂ©s, et pour que l’attribut IUCLC prenne effet.

Le tableau c_cc définit des caractÚres spéciaux. Les symboles (valeurs initiales) et significations sont :
VDISCARD

(Pas dans POSIX, non géré 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.

VDSUSP

(Pas dans POSIX et non géré sous Linux ; 031, EM, Ctrl-Y) CaractÚre de suspension retardée (DSUSP). 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 gÚree le contrÎle des processus, et non transmis en entrée.

VEOF

(004, EOT, Ctrl-D) CaractĂšre de fin de fichier (EOF). Plus prĂ©cisĂ©ment : ce caractĂšre oblige l’envoi du contenu du tampon vers le programme lecteur sans attendre la fin de ligne. S’il s’agit du premier caractĂšre de la ligne, l’appel Ă  read (2) 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.

VEOL

(0, NUL) CaractÚre fin de ligne supplémentaire (EOL). Reconnu quand ICANON est actif.

VEOL2

(Pas dans POSIX ; 0, NUL) Encore un autre caractÚre fin de ligne (EOL2). Reconnu quand ICANON est actif.

VERASE

(0177, DEL, rubout, ou 010, BS, Ctrl-H ou encore #) CaractĂšre d’effacement (ERASE). Cela efface le caractĂšre prĂ©cĂ©dent pas encore effacĂ©, mais ne revient pas en deça d’EOF ou du dĂ©but de ligne. Reconnu quand ICANON est actif, et n’est pas transmis en entrĂ©e.

VINTR

(003, ETX, Ctrl-C, ou encore 0177, DEL, rubout) CaractĂšre d’interruption (INTR). Envoie le signal SIGINT . Reconnu quand ISIG est prĂ©sent, et n’est pas transmis en entrĂ©e.

VKILL

(025, NAK, Ctrl-U ou Ctrl-X, ou encore @) CaractĂšre Kill (KILL). Il 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.

VLNEXT

(Pas dans POSIX ; 026, SYN, Ctrl-V) Suivant littéral (LNEXT). ProtÚge le caractÚre suivant en lui supprimant toute signification spéciale. Reconnu quand IEXTEN est actif, et pas transmis en entrée.

VMIN

Nombre minimal de caractùres lors d’une lecture en mode non canonique (MIN).

VQUIT

(034, FS, Ctrl-\) CaractĂšre Quit (QUIT). Envoie le signal SIGQUIT . Reconnu quand ISIG est prĂ©sent, et n’est pas transmis en entrĂ©e.

VREPRINT

(Pas dans POSIX ; 022, DC2, Ctrl-R) Réafficher les caractÚres pas encore lus (REPRINT). Reconnu quand ICANON et IEXTEN sont actifs, et pas transmis en entrée.

VSTART

(021, DC1, Ctrl-Q) CaractĂšre de dĂ©marrage (START). Relance la sortie interrompue par un caractĂšre d’arrĂȘt. Reconnu quand IXON est actif, et pas transmis en entrĂ©e.

VSTATUS

(Pas dans POSIX, non gĂ©rĂ© sous Linux ; 024, DC4, Ctrl-T). CaractĂšre d’état (STATUS). Affiche sur le terminal des informations sur l’état, incluant l’état du processus en premier plan et la quantitĂ© de temps CPU qu’il a consommĂ©. Envoie aussi un signal SIGINFO (not gĂ©rĂ© par Linux) au groupe du processus de premier plan.

VSTOP

(023, DC3, Ctrl-S) CaractĂšre d’arrĂȘt (STOP). 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 (SUSP). Envoie le signal SIGTSTP . Reconnu quand ISIG est actif, et pas transmis en entrée.

VSWTCH

(Pas dans POSIX et non géré sous Linux ; 0, NUL) CaractÚre de basculement (SWTCH). Utilisé par System V pour basculer les shells dans des calques ( shell layers ), notion qui a précédé le contrÎle des travaux du shell.

VTIME

Délai en dixiÚmes 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 entrée.

Un caractĂšre spĂ©cial de terminal isolĂ© peut ĂȘtre dĂ©sactivĂ© en positionnant la valeur de l’élĂ©ment c_cc correspondant Ă  _POSIX_VDISABLE .

Les valeurs d’indices ci-dessus sont toutes diffĂ©rentes, sauf VTIME et VMIN qui peuvent avoir la mĂȘme valeur que VEOL et VEOF respectivement. En mode non canonique, la signification d’un caractĂšre spĂ©cial est remplacĂ©e par sa valeur de temporisation. Pour des explications sur VMIN et VTIME , consultez la description du mode non canonique ci-dessous.

Récupérer et changer les paramÚtres du terminal

tcgetattr () rĂ©cupĂšre 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 au premier plan.

tcsetattr () définit les paramÚtres du terminal (à moins que le matériel sous-jacent ne le gÚre pas) 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 option 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.

Mode canonique et non canonique

La dĂ©finition de l’attribut canonique ICANON dans c_lflag dĂ©termine si le terminal est dans le mode canonique ( ICANON positionnĂ©) ou non canonique ( ICANON non positionnĂ©). Par dĂ©faut, ICANON est positionnĂ©.

Dans le mode canonique :

-

L’entrĂ©e est rendue disponible ligne Ă  ligne. Une ligne d’entrĂ©e est disponible quand un dĂ©limiteur de ligne (NL, EOL, EOL2 ou EOF au dĂ©but d’une ligne). Sauf dans le cas de EOF, le dĂ©limiteur de ligne est inclus dans le tampon renvoyĂ© par read (2).

-

L’édition des lignes est activĂ©e (ERASE, KILL ; et si le bit IEXTEN est positionné : WERASE, REPRINT, LNEXT). Un read (2) renverra au plus une ligne de l’entrĂ©e ; si le read (2) a demandĂ© moins de caractĂšres que disponibles dans la ligne en cours, seuls les octets demandĂ©s seront lus, et les autres caractĂšres seront disponibles pour les read (2) suivants.

-

La longueur maximale de ligne est 4096 caractĂšres (y compris le caractĂšre saut de ligne terminal) ; les lignes de plus de 4096 caractĂšres sont tronquĂ©es. AprĂšs 4095 caractĂšres, le traitement de l’entrĂ©e (par exemple le traitement de ISIG et ECHO* ) se poursuit, mais les donnĂ©es entrĂ©es aprĂšs 4095 caractĂšres jusqu’à (mais sans l’inclure) un saut de ligne terminal sont abandonnĂ©es. Cela assure que le terminal peut toujours recevoir plus d’entrĂ©es jusqu’à ce que au moins une ligne puisse ĂȘtre lue.

Dans le mode non canonique, l’entrĂ©e est disponible tout de suite (sans que l’utilisateur ait Ă  taper de caractĂšre dĂ©limiteur de ligne), aucun traitement de l’entrĂ©e n’est effectuĂ©, et l’édition des lignes est dĂ©sactivĂ©e. Le tampon de lecture acceptera seulement 4095 caractĂšres ; cela laisse l’espace nĂ©cessaire pour un caractĂšre saut de ligne si le mode d’entrĂ©e devient canonique. La valeur des paramĂštres MIN ( c_cc[VMIN] ) et TIME ( c_cc[VTIME] ) dĂ©termine les circonstances dans lesquelles read (2) se termine ; il y a quatre cas diffĂ©rents :
MIN == 0, TIME == 0 (lecture de scrutation (polling))

Si des donnĂ©es sont disponibles, read (2) renvoie immĂ©diatement le nombre d’octets disponibles ou le nombre d’octets demandĂ©s (le plus petit des deux). Si aucune donnĂ©e n’est disponible, read (2) renvoie 0.

MIN > 0, TIME == 0 (lecture bloquante)

read (2) est bloquant jusqu’à ce que MIN octets soient disponibles, puis renvoie jusqu’au nombre d’octet demandĂ©s.

MIN == 0, TIME > 0 (lecture avec délai)

TIME indique une limite de temps en dixiĂšme de seconde. Le dĂ©compte du temps commence lors de l’appel Ă  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 donnĂ©es disponibles, read (2) renvoie 0. Si des donnĂ©es sont dĂ©jĂ  disponibles au moment de l’appel Ă  read (2), l’appel se comporte comme si les donnĂ©es Ă©taient reçues immĂ©diatement aprĂšs l’appel.

MIN > 0, TIME > 0 (lecture avec délai entre deux octets)

TIME indique une limite de temps en dixiÚme de seconde. Quand un premier caractÚre est disponible en entrée, la temporisation est démarrée, puis remise à zéro à chaque caractÚre reçu. read (2) se termine quand une des conditions suivantes est vraie.

-

MIN octets ont été reçus.

-

Le délai entre deux octets est dépassé.

-

Le nombre d’octets demandĂ©s par read (2) a Ă©tĂ© reçu (POSIX ne spĂ©cifie pas cette condition de fin et d’autres implĂ©mentations de read (2) ne se terminent pas dans ce cas).

Comme la temporisation n’est dĂ©marrĂ©e que lors de la rĂ©ception du premier octet, au moins un octet sera lu. Si des donnĂ©es sont dĂ©jĂ  disponibles au moment de l’appel Ă  read (2), l’appel se comporte comme si les donnĂ©es Ă©taient reçues immĂ©diatement aprĂšs l’appel.

POSIX ne spĂ©cifie pas si le rĂ©glage de l’attribut d’état de fichier O_NONBLOCK est prioritaire sur les rĂ©glages de MIN et TIME. Si O_NONBLOCK est dĂ©fini, un read (2) en mode non canonique pourrait s’arrĂȘter immĂ©diatement, quelque soit le rĂ©glage de MIN ou TIME. De plus, si aucune donnĂ©e n’est disponible, POSIX permet un read (2) en mode non canonique de renvoyer soit 0, soit -1 avec errno dĂ©fini Ă  EAGAIN .

Mode brut

cfmakeraw () place le terminal dans un mode proche du mode « raw » de l’ancien pilote de terminal version 7 : l’entrĂ©e est disponible caractĂšre par caractĂšre, il n’y a pas d’écho ni de traitement particulier des caractĂšres d’entrĂ©e ou sortie. Les attributs du terminal sont dĂ©finis 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

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 nulle, 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 :
TCIFLUSH

efface les données reçues mais non lues.

TCOFLUSH

efface les données écrites mais non transmises.

TCIOFLUSH

efface à la fois les données reçues non lues, et les données écrites 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.

Vitesse de la ligne

Il est possible d’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Ă©ussi.

DĂ©finir une vitesse B0 demande au modem de raccrocher. 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 () dĂ©finit la vitesse de sortie stockĂ©e dans la structure termios pointĂ©e par termios_p Ă  la valeur vitesse , 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
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 diffĂ©rences entre les architectures, les applications portables devraient vĂ©rifier si une constante particuliĂšre B nnn est dĂ©finie avant de l’utiliser.

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, cela 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.

DĂ©finir la vitesse Ă  une valeur autre que celles dĂ©finies par les constantes B nnn est possible au moyen de l’ioctl TCSETS2 ; voir ioctl_tty (2).

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

cfsetispeed () dĂ©finit la vitesse d’entrĂ©e stockĂ©e dans la structure termios Ă  la valeur vitesse , qui doit ĂȘtre spĂ©cifiĂ©e Ă  l’aide d’une des constantes B nnn listĂ©es ci-dessus pour cfsetospeed (). Si la vitesse d’entrĂ©e est mise Ă  la constante littĂ©rale 0 (pas la constante symbolique B0 ), elle prendra la mĂȘme valeur que la vitesse de sortie.

cfsetspeed () est une extension 4.4BSD. Elle prend les mĂȘmes arguments que cfsetispeed (), et dĂ©finit Ă  la fois les vitesses d’entrĂ©e et de sortie.

VALEUR RENVOYÉE

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 elles réussissent,

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

ATTRIBUTS

Pour une explication des termes utilisés dans cette section, consulter attributes (7).

Image grohtml-3877909-1.png

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 systĂšmes ultĂ©rieurs avaient une liste de vitesse de transmission oĂč l’on rencontrait, aprĂšs les valeurs de B0 Ă  B9600 , les deux constantes EXTA et EXTB (« External A » et « External B »). De nombreux systĂšmes Ă©tendent cette liste avec des vitesses bien plus rapides.

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

BOGUES

Sur les architectures Alpha avant Linux 4.16 (et la glibc avant la glibc 2.28), la valeur XTABS Ă©tait diffĂ©rente de TAB3 et Ă©tait ignorĂ©e par le code de discipline de ligne N_TTY du pilote du terminal en consĂ©quence (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 française de cette page de manuel a été créée par Christophe Blaess <https://www.blaess.fr/christophe/>, Stéphan Rafin <stephan.rafin@laposte.net>, Thierry Vignaud <tvignaud@mandriva.com>, François Micaux, Alain Portal <aportal@univ-montp2.fr>, Jean-Philippe Guérard <fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>, Julien Cristau <jcristau@debian.org>, Thomas Huriaux <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>, Denis Barbier <barbier@debian.org>, David Prévot <david@tilapin.org> et Jean-Pierre Giraud <jean-pierregiraud@neuf.fr>

Cette traduction est une documentation libre ; veuillez vous reporter à la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n’y a aucune RESPONSABILITÉ LÉGALE.

Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à debian-l10n-french@lists.debian.org .