.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 2002 Walter Harms .\" and Andries Brouwer . .\" .\" SPDX-License-Identifier: GPL-1.0-or-later .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ioctl_tty 2 "3 mai 2023" "Pages du manuel de Linux 6.05.01" .SH NOM ioctl_tty \- Ioctls pour les terminaux et lignes série .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP \fB#include \fP /* Définition de \fBstruct termios\fP, \fB struct termios2\fP et \fB Bnnn\fP, \fBBOTHER\fP, \fBCBAUD\fP, \fBCLOCAL\fP, \fB TC*\fP{\fBFLUSH\fP,\fBON\fP,\fBOFF\fP} et d'autres constantes */ .PP \fBint ioctl(int \fP\fIfd\fP\fB, int \fP\fIcmd\fP\fB, ...);\fP .fi .SH DESCRIPTION Les appels système \fBioctl\fP(2) pour les terminaux et les ports série acceptent différents paramètres possibles. La plupart nécessitent un troisième paramètre, d'un type variable, appelé \fIargp\fP ou \fIarg\fP. .PP Utiliser des \fIioctl\fPs rend les programmes non portables. Utilisez l'interface POSIX décrite dans \fBtermios\fP(3) si possible. .PP Veuillez noter que \fBstruct termios\fP de \fI\fP est différente et incompatible avec \fBstruct termios\fP de \fI\fP. Ces appels ioctl exigent \fBstruct termios\fP de \fI\fP. .SS "Récupérer et positionner les attributs d'un terminal" .TP \fBTCGETS\fP Argument\ : \fBstruct termios\~*\fP\fIargp\fP .IP Équivalent à \fItcgetattr(fd, argp)\fP. .IP Récupérer la configuration du port série courant. .TP \fBTCSETS\fP Argument\ : \fBconst struct termios\~*\fP\fIargp\fP .IP Équivalent à \fItcsetattr(fd, TCSANOW, argp)\fP. .IP Configurer le port série courant. .TP \fBTCSETSW\fP Argument\ : \fBconst struct termios\~*\fP\fIargp\fP .IP Équivalent à \fItcsetattr(fd, TCSADRAIN, argp)\fP. .IP Laisser le tampon de sortie se vider, puis configurer le port série courant. .TP \fBTCSETSF\fP Argument\ : \fBconst struct termios\~*\fP\fIargp\fP .IP Équivalent à \fItcsetattr(fd, TCSAFLUSH, argp)\fP. .IP Laisser le tampon de sortie se vider, abandonner toute entrée en cours, puis configurer le port série courant. .PP .\" commit 64bb6c5e1ddcd47c951740485026ef08975ee2e6 .\" commit 592ee3a5e5e2a981ef2829a0380093006d045661 Les quatre ioctls suivants, ajoutés à Linux 2.6.20, sont équivalents à \fBTCGETS\fP, \fBTCSETS\fP, \fBTCSETSW\fP, \fBTCSETSF\fP, sauf qu'ils prennent une \fIstruct termios2\~*\fP à la place d'une \fIstruct termios\~*\fP. Si le membre de structure \fBc_cflag\fP contient l'attribut \fBBOTHER\fP, le débit en bauds est stocké dans les membres de structure \fBc_ispeed\fP et \fBc_ospeed\fP en tant qu'entier. Ces ioctls ne sont pas pris en charge sur toutes les architectures. .RS .TS lb l. TCGETS2 \fBstruct termios2 *\fPargp TCSETS2 \fBconst struct termios2 *\fPargp TCSETSW2 \fBconst struct termios2 *\fPargp TCSETSF2 \fBconst struct termios2 *\fPargp .TE .RE .PP Les quatre ioctls suivants sont équivalents à \fBTCGETS\fP, \fBTCSETS\fP, \fBTCSETSW\fP et \fBTCSETSF\fP, sauf qu'ils prennent une structure \fIstruct termio\~*\fP à la place d'une \fIstruct termios\~*\fP. .RS .TS lb l. TCGETA \fBstruct termio *\fPargp TCSETA \fBconst struct termio *\fPargp TCSETAW \fBconst struct termio *\fPargp TCSETAF \fBconst struct termio *\fPargp .TE .RE .SS "Verrouiller une structure termios" La structure \fItermios\fP d'un terminal peut être verrouillée. Le verrou est en lui\-même une structure \fItermios\fP, dont les bits ou champs non nuls indiquent une valeur verrouillée. .TP \fBTIOCGLCKTRMIOS\fP Argument\ : \fBstruct termios\~*\fP\fIargp\fP .IP Récupérer l'état du verrou de la structure \fItermios\fP du terminal. .TP \fBTIOCSLCKTRMIOS\fP Argument\ : \fBconst struct termios\~*\fP\fIargp\fP .IP Définir l'état du verrou de la structure \fItermios\fP du terminal. Seul un processus avec la capacité \fBCAP_SYS_ADMIN\fP peut faire cela. .SS "Récupérer et configurer les tailles de fenêtre" Les tailles de fenêtre sont stockées dans le noyau, mais ne sont pas utilisées par le noyau (sauf pour les consoles virtuelles, pour lesquelles le noyau met à jour les tailles de fenêtre quand la taille d'une console virtuelle change, par exemple lors du chargement d'une nouvelle fonte). .TP \fBTIOCGWINSZ\fP Argument\ : \fBstruct winsize\~*\fP\fIargp\fP .IP Récupérer la taille de la fenêtre. .TP \fBTIOCSWINSZ\fP Argument\ : \fBconst struct winsize\~*\fP\fIargp\fP .IP Définir la taille de la fenêtre. .PP La structure utilisée par ces ioctls est la suivante\ : .PP .in +4n .EX struct winsize { unsigned short ws_row; unsigned short ws_col; unsigned short ws_xpixel; /* non utilisé */ unsigned short ws_ypixel; /* non utilisé */ }; .EE .in .PP Lorsque la taille d'une fenêtre change, un signal \fBSIGWINCH\fP est envoyé au groupe de processus au premier plan. .SS "Envoyer une interruption («\ break\ »)" .TP \fBTCSBRK\fP Argument\ : \fBint \fP\fIarg\fP .IP Équivalent à \fItcsendbreak(fd, arg)\fP. .IP Si le terminal utilise un mode de transmission série asynchrone et que \fIarg\fP est nul, alors une interruption (un flux de bits nuls) est envoyée pendant 0,25 à 0,5 seconde. Si le terminal n'utilise pas un mode de transmission série asynchrone, alors soit une interruption est envoyée, soit la fonction ne fait rien. Quand \fIarg\fP est non nul, le comportement n'est pas défini. .IP (SVr4, UnixWare, Solaris et Linux traitent \fItcsendbreak(fd,arg)\fP avec un paramètre \fIarg\fP non nul de la même façon que \fItcdrain(fd)\fP. SunOS considère \fIarg\fP comme un coefficient multiplicateur et envoie un flux de bits \fIarg\fP fois plus long que lorsque \fIarg\fP est nul. DG/UX et AIX traitent \fIarg\fP (lorsqu'il est non nul) comme un intervalle de temps exprimé en millisecondes. HP\-UX ignore \fIarg\fP.) .TP \fBTCSBRKP\fP Argument\ : \fBint \fP\fIarg\fP .IP Ce qu'on appelle la «\ version POSIX\ » de \fBTCSBRK\fP. Elle traite le \fIarg\fP non nul comme un intervalle de temps mesuré en dixièmes de seconde et ne fait rien lorsque le pilote ne gère pas les interruptions. .TP \fBTIOCSBRK\fP Argument\ : \fBvoid\fP .IP Activer les interruptions, c'est\-à\-dire commencer à envoyer des bits nuls. .TP \fBTIOCCBRK\fP Argument\ : \fBvoid\fP .IP Désactiver les interruptions, c'est\-à\-dire arrêter d'envoyer les bits nuls. .SS "Contrôle de flux logiciel" .TP \fBTCXONC\fP Argument\ : \fBint \fP\fIarg\fP .IP Équivalent à \fItcflow(fd, arg)\fP. .IP Consultez \fBtcflow\fP(3) pour avoir la signification des valeurs \fBTCOOFF\fP, \fBTCOON\fP, \fBTCIOFF\fP et \fBTCION\fP. .SS "Information sur les tampons et vidage" .TP \fBFIONREAD\fP Argument\ : \fBint\~*\fP\fIargp\fP .IP Récupérer le nombre d'octets dans le tampon d'entrée. .TP \fBTIOCINQ\fP Argument\ : \fBint\~*\fP\fIargp\fP .IP Identique à \fBFIONREAD\fP. .TP \fBTIOCOUTQ\fP Argument\ : \fBint\~*\fP\fIargp\fP .IP Récupérer le nombre d'octets dans le tampon de sortie. .TP \fBTCFLSH\fP Argument\ : \fBint \fP\fIarg\fP .IP Équivalent à \fItcflush(fd, arg)\fP. .IP Consultez \fBtcflush\fP(3) pour la signification de \fBTCIFLUSH\fP, \fBTCOFLUSH\fP et \fBTCIOFLUSH\fP. .TP \fBTIOCSERGETLSR\fP Argument\ : \fBint\~*\fP\fIargp\fP .IP Récupérer le registre d'état de ligne. Le registre d'état a le bit \fBTIOCSER_TEMT\fP défini quand le tampon de sortie est vide et qu'également le transmetteur matériel est physiquement vide. .IP Ne doit pas être pris en charge par tous les pilotes tty série. .IP \fBtcdrain\fP(3) n'attend pas et renvoie immédiatement lorsque le bit \fBTIOCSER_TEMT\fP est défini. .SS "Simuler l'entrée" .TP \fBTIOCSTI\fP Argument\ : \fBconst char\~*\fP\fIargp\fP .IP Insérer l'octet donné dans la queue d'entrée. .SS "Rediriger la sortie de la console" .TP \fBTIOCCONS\fP Argument\ : \fBvoid\fP .IP Rediriger la sortie qui serait allée vers \fI/dev/console\fP ou \fI/dev/tty0\fP vers un terminal donné. S'il s'agit d'un pseudoterminal maître, envoyer à l'esclave. Avant Linux\ 2.6.10, n'importe qui peut utiliser cet appel à condition que la sortie ne soit pas déjà redirigée\ ; depuis Linux 2.6.10, seul un processus avec la capacité \fBCAP_SYS_ADMIN\fP peut l'utiliser. Si elle a déjà été redirigée, \fBEBUSY\fP est renvoyée, mais la redirection peut être arrêtée en utilisant cet ioctl avec \fIfd\fP pointant vers \fI/dev/console\fP ou \fI/dev/tty0\fP. .SS "Terminal de contrôle" .TP \fBTIOCSCTTY\fP Argument\ : \fBint \fP\fIarg\fP .IP Faire du terminal donné le terminal de contrôle du processus appelant. Le processus appelant doit être un leader de session et ne doit pas déjà avoir de terminal de contrôle. Dans ce cas, \fIarg\fP doit valoir zéro. .IP Si ce terminal est déjà le terminal de contrôle d'une autre session, alors l'ioctl échoue avec le code d'erreur \fBEPERM\fP, à moins que l'appelant soit un superutilisateur (plus précisément : qu'il ait la capacité \fBCAP_SYS_ADMIN\fP) et que \fIarg\fP vaille \fB1\fP. Dans ce dernier cas, le terminal est «\ volé\ », et tous les processus pour lesquels c'était le terminal de contrôle le perdent. .TP \fBTIOCNOTTY\fP Argument\ : \fBvoid\fP .IP Si le terminal donné est le terminal de contrôle du processus appelant, abandonner ce terminal de contrôle. Si le processus est un leader de session, alors \fBSIGHUP\fP et \fBSIGCONT\fP seront envoyés au groupe de processus au premier plan, et tous les processus de la session perdent leur terminal de contrôle. .SS "Groupe de processus et identifiant de session" .TP \fBTIOCGPGRP\fP Argument\ : \fBpid_t\~*\fP\fIargp\fP .IP En cas de succès, équivalent à \fI*argp = tcgetpgrp(fd)\fP. .IP Récupérer l'identifiant du groupe de processus au premier plan sur ce terminal. .TP \fBTIOCSPGRP\fP Argument\ : \fBconst pid_t\~*\fP\fIargp\fP .IP Équivalent à \fItcsetpgrp(fd, *argp)\fP. .IP Définir l'identifiant du groupe de processus au premier plan du terminal. .TP \fBTIOCGSID\fP Argument\ : \fBpid_t\~*\fP\fIargp\fP .IP En cas de succès, équivalent à \fI*argp = tcgetsid(fd)\fP. .IP Récupérer l'identifiant de session du terminal donné. L'appel échouera avec pour erreur \fBENOTTY\fP si le terminal n'est pas un pseudoterminal maître et n'est pas notre terminal de contrôle. Étrange. .SS "Mode exclusif" .TP \fBTIOCEXCL\fP Argument\ : \fBvoid\fP .IP Mettre le terminal en mode exclusif. Plus aucun appel \fBopen\fP(2) sur le terminal ne sera autorisé. (Ils échoueront avec l'erreur \fBEBUSY\fP, sauf pour un processus ayant la capacité \fBCAP_SYS_ADMIN\fP.) .TP \fBTIOCGEXCL\fP Argument\ : \fBint\~*\fP\fIargp\fP .IP (Depuis Linux 3.8) Si le terminal est actuellement en mode exclusif, mettre une valeur positive à l'endroit vers lequel pointe \fIargp\fP\ ; sinon mettre un zéro dans \fI*argp\fP. .TP \fBTIOCNXCL\fP Argument\ : \fBvoid\fP .IP Désactiver le mode exclusif. .SS "Paramètres de la ligne («\ line discipline\ »)" .TP \fBTIOCGETD\fP Argument\ : \fBint\~*\fP\fIargp\fP .IP Récupérer les paramètres de la ligne du terminal. .TP \fBTIOCSETD\fP Argument\ : \fBconst int\~*\fP\fIargp\fP .IP Définir les paramètres de la ligne («\ line discipline\ ») du terminal. .SS "Ioctls pour les pseudoterminaux" .TP \fBTIOCPKT\fP Argument\ : \fBconst int\~*\fP\fIargp\fP .IP Activer (quand *\fIargp\fP n'est pas nul) ou désactiver le mode paquet. Ne peut être appliqué qu'à la partie maître d'un pseudoterminal (renvoie \fBENOTTY\fP sinon). En mode paquet, chaque \fBread\fP(2) suivant renverra un paquet qui contient soit un seul octet de contrôle non nul, soit un unique octet nul (\[aq]\e0\[aq]) suivi par les données écrites du côté esclave du pseudoterminal. Si le premier octet n'est pas \fBTIOCPKT_DATA\fP (0), il s'agit d'un OU logique entre les bits suivants\ : .IP .ad l .TS lb l. TIOCPKT_FLUSHREAD T{ La file de lecture du terminal est vidée. T} TIOCPKT_FLUSHWRITE T{ La file d'écriture du terminal est vidée. T} TIOCPKT_STOP T{ La sortie sur le terminal est arrêtée. T} TIOCPKT_START T{ La sortie sur le terminal est redémarrée. T} TIOCPKT_DOSTOP T{ Les caractères de démarrage et d'arrêt sont \fB\[ha]S\fP/\fB\[ha]Q\fP. T} TIOCPKT_NOSTOP T{ Les caractères de démarrage et d'arrêt ne sont pas \fB\[ha]S\fP/\fB\[ha]Q\fP. T} .TE .ad .IP Tant que le mode paquet est utilisé, la présence d'informations d'état de contrôle à lire du côté maître peut être détectée avec \fBselect\fP(2) pour les conditions exceptionnelles ou un \fBpoll\fP(2) pour l'événement \fIPOLLPRI\fP. .IP Ce mode est utilisé par \fBrlogin\fP(1) et \fBrlogind\fP(8) pour implémenter l'envoi distant du contrôle de flux \fB\[ha]S\fP/\fB\[ha]Q\fP en local. .TP \fBTIOCGPKT\fP Argument\ : \fBconst int\~*\fP\fIargp\fP .IP (Depuis Linux 3.8) Renvoyer le paramètre du mode paquet actuel dans l'entier vers lequel pointe \fIargp\fP. .TP \fBTIOCSPTLCK\fP Argument\ : \fBint\~*\fP\fIargp\fP .IP Positionner (si \fI*argp\fP n'est pas nul) ou effacer (si \fI*argp\fP est zéro) le verrou sur le périphérique esclave du pseudoterminal (voir aussi \fBunlockpt\fP(3)). .TP \fBTIOCGPTLCK\fP Argument\ : \fBint\~*\fP\fIargp\fP .IP (Depuis Linux 3.8) Mettre l'état actuel du verrou du périphérique esclave du terminal virtuel à l'emplacement vers lequel pointe \fIargp\fP. .TP \fBTIOCGPTPEER\fP Argument\ : \fBint \fP\fIflags\fP .IP .\" commit 54ebbfb1603415d9953c150535850d30609ef077 (Depuis Linux 4.13) À partir d'un descripteur de fichier de \fIfd\fP qui se rapporte à un terminal virtuel maître, ouvrir (avec les \fIflags\fP donnés à la manière de \fBopen\fP(2)) et renvoyer un nouveau descripteur de fichier qui renvoie au terminal virtuel esclave correspondant. Cette opération peut être effectuée que le chemin du périphérique esclave soit accessible par l'espace de noms de montage du processus appelant ou pas. .IP Les programmes soucieux de la sécurité qui interagissent avec les espaces de noms peuvent souhaiter utiliser cette opération au lieu de \fBopen\fP(2) avec le chemin renvoyé par \fBptsname\fP(3) et les fonctions de bibliothèque semblables ayant des APIs non sécurisées (par exemple, il peut y avoir des confusions dans certains cas en utilisant \fBptsname\fP(3) avec un chemin où un système de fichiers devpts a été monté dans un autre espace de noms de montage). .PP Les ioctls BSD \fBTIOCSTOP\fP, \fBTIOCSTART\fP, \fBTIOCUCNTL\fP et \fBTIOCREMOTE\fP n'ont pas été implémentés sous Linux. .SS "Contrôle des modems" .TP \fBTIOCMGET\fP Argument\ : \fBint\~*\fP\fIargp\fP .IP Récupérer l'état des bits du modem. .TP \fBTIOCMSET\fP Argument\ : \fBconst int\~*\fP\fIargp\fP .IP Définir l'état des bits du modem. .TP \fBTIOCMBIC\fP Argument\ : \fBconst int\~*\fP\fIargp\fP .IP Effacer les bits du modem indiqués. .TP \fBTIOCMBIS\fP Argument\ : \fBconst int\~*\fP\fIargp\fP .IP Positionner les bits du modem indiqués. .PP Les bits suivants sont utilisés par les ioctls ci\-dessus\ : .PP .TS lb l. TIOCM_LE DSR (data set ready/ligne activée) TIOCM_DTR DTR (data terminal ready, terminal de données prêt) TIOCM_RTS RTS (request to send, requête à envoyer) TIOCM_ST TXD secondaire (transmit) TIOCM_SR RXD secondaire (receive) TIOCM_CTS CTS (clear to send, vider pour envoyer) TIOCM_CAR DCD (data carrier detect) TIOCM_CD voir TIOCM_CAR TIOCM_RNG RNG (ring) TIOCM_RI voir TIOCM_RNG TIOCM_DSR DSR (data set ready) .TE .TP \fBTIOCMIWAIT\fP Argument\ : \fBint \fP\fIarg\fP .IP Attendre qu'un des bits de modem (DCD, RI, DSR, CTS) change. Les bits intéressants sont indiqués sous la forme de masques de bits dans \fIarg\fP en reliant (opération OR) toutes les valeurs de bits, \fBTIOCM_RNG\fP, \fBTIOCM_DSR\fP, \fBTIOCM_CD\fP et \fBTIOCM_CTS\fP. L'appelant doit utiliser \fBTIOCGICOUNT\fP pour savoir le bit qui a changé. .TP \fBTIOCGICOUNT\fP Argument\ : \fBstruct serial_icounter_struct\~*\fP\fIargp\fP .IP Récupérer le nombre d'interruptions de la ligne série d'entrée (DCD, RI, DSR, CTS). Le nombre est écrit dans une structure \fIserial_icounter_struct\fP vers laquelle pointe \fIargp\fP. .IP Note\ : les transitions 1\->0 et 0\->1 sont prises en compte, sauf pour RI, où seules les transitions 0\->1 sont prises en compte. .SS "Marquer une ligne comme étant locale" .TP \fBTIOCGSOFTCAR\fP Argument\ : \fBint\~*\fP\fIargp\fP .IP (GSOFTCAR\ : «\ Get SOFTware CARrier flag\ ») Récupérer l'état du drapeau CLOCAL dans le champ c_cflag de la structure \fItermios\fP. .TP \fBTIOCSSOFTCAR\fP Argument\ : \fBconst int\~*\fP\fIargp\fP .IP (SSOFTCAR\ : «\ Set SOFTware CARrier flag\ ») Positionner le drapeau CLOCAL de la structure \fItermios\fP si *\fIargp\fP n'est pas nul, et l'effacer dans le cas contraire. .PP Si le drapeau \fBCLOCAL\fP d'une ligne est désactivé, le signal de détection de porteuse (DCD) est significatif et un appel à \fBopen\fP(2) sur le terminal correspondant sera bloqué tant que le signal DCD sera maintenu, à moins que le drapeau \fBO_NONBLOCK\fP soit fourni. Si \fBCLOCAL\fP est positionné, la ligne se comporte comme si DCD était maintenu en permanence. Le drapeau logiciel pour la porteuse est généralement positionné pour les périphériques locaux et désactivé pour les lignes par modem. .SS "Spécifique à Linux" Pour l'ioctl \fBTIOCLINUX\fP, reportez\-vous à \fBioctl_console\fP(2). .SS "Débogage du noyau" \fB#include \fP .TP \fBTIOCTTYGSTRUCT\fP Argument\ : \fBstruct tty_struct\~*\fP\fIargp\fP .IP .\" commit b3506a09d15dc5aee6d4bb88d759b157016e1864 .\" Author: Andries E. Brouwer .\" Date: Tue Apr 1 04:42:46 2003 -0800 .\" .\" [PATCH] kill TIOCTTYGSTRUCT .\" .\" Only used for (dubious) debugging purposes, and exposes .\" internal kernel state. .\" .\" .SS Serial info .\" .BR "#include " .\" .PP .\" .TP .\" .BI "TIOCGSERIAL struct serial_struct *" argp .\" Get serial info. .\" .TP .\" .BI "TIOCSSERIAL const struct serial_struct *" argp .\" Set serial info. Récupérer la structure \fItty_struct\fP correspondant à \fIfd\fP. Cette commande a été supprimée dans Linux 2.5.67. .SH "VALEUR RENVOYÉE" L'appel système \fBioctl\fP(2) renvoie \fB0\fP en cas de succès. En cas d'erreur, il renvoie \fB\-1\fP et positionne \fIerrno\fP pour indiquer l'erreur. .SH ERREURS .TP \fBEINVAL\fP Paramètre de commande non valable. .TP \fBENOIOCTLCMD\fP Commande inconnue. .TP \fBENOTTY\fP \fIfd\fP inapproprié. .TP \fBEPERM\fP Droits insuffisants. .SH EXEMPLES Vérifier l’état de DTR sur un port série. .PP .\" SRC BEGIN (tiocmget.c) .EX #include #include #include #include \& int main(void) { int fd, serial; \& fd = open("/dev/ttyS0", O_RDONLY); ioctl(fd, TIOCMGET, &serial); if (serial & TIOCM_DTR) puts("TIOCM_DTR is set"); else puts("TIOCM_DTR is not set"); close(fd); } .EE .\" SRC END .PP Récupérer ou définir un débit en bauds sur le port série. .PP .\" SRC BEGIN (tcgets.c) .EX /* SPDX\-License\-Identifier: GPL\-2.0\-or\-later */ \& #include #include #include #include #include #include \& int main(int argc, char *argv[]) { #if !defined BOTHER fprintf(stderr, "BOTHER n'est pas pris en charge\en"); /* Le programme peut se rabattre sur TCGETS/TCSETS avec des constantes Bnnn */ exit(EXIT_FAILURE); #else /* Déclarer la structure tio, son type dépend de l'ioctl pris en charge */ # if defined TCGETS2 struct termios2 tio; # else struct termios tio; # endif int fd, rc; \& if (argc != 2 && argc != 3 && argc != 4) { fprintf(stderr, "Usage: %s device [output [input] ]\en", argv[0]); exit(EXIT_FAILURE); } \& fd = open(argv[1], O_RDWR | O_NONBLOCK | O_NOCTTY); if (fd < 0) { perror("open"); exit(EXIT_FAILURE); } \& /* Récupérer les paramètres du port série actuel à l'aide de l'ioctl pris en charge */ # if defined TCGETS2 rc = ioctl(fd, TCGETS2, &tio); # else rc = ioctl(fd, TCGETS, &tio); # endif if (rc) { perror("TCGETS"); close(fd); exit(EXIT_FAILURE); } \& /* Modifier le débit en bauds quand plus d'arguments ont été fournis */ if (argc == 3 || argc == 4) { /* Effacer le débit en bauds en sortie actuel et définir une nouvelle valeur */ tio.c_cflag &= \[ti]CBAUD; tio.c_cflag |= BOTHER; tio.c_ospeed = atoi(argv[2]); \& /* Effacer le débit en bauds en entrée actuel et définir une nouvelle valeur */ tio.c_cflag &= \[ti](CBAUD << IBSHIFT); tio.c_cflag |= BOTHER << IBSHIFT; /* Quand le 4e argument n'est pas fourni, réutiliser le débit en bauds de sortie */ tio.c_ispeed = (argc == 4) ? atoi(argv[3]) : atoi(argv[2]); \& /* Définir de nouveaux paramètres du port série à l'aide de l'ioctl pris en charge */ # if defined TCSETS2 rc = ioctl(fd, TCSETS2, &tio); # else rc = ioctl(fd, TCSETS, &tio); # endif if (rc) { perror("TCSETS"); close(fd); exit(EXIT_FAILURE); } \& /* Et obtenir de nouvelles valeurs vraiment configurées */ # if defined TCGETS2 rc = ioctl(fd, TCGETS2, &tio); # else rc = ioctl(fd, TCGETS, &tio); # endif if (rc) { perror("TCGETS"); close(fd); exit(EXIT_FAILURE); } } \& close(fd); \& printf("débit en bauds en sortie\ : %u\en", tio.c_ospeed); printf("débit en bauds en entrée\ : %u\en", tio.c_ispeed); \& exit(EXIT_SUCCESS); #endif } .EE .\" SRC END .SH "VOIR AUSSI" \fBldattach\fP(8), \fBioctl\fP(2), \fBioctl_console\fP(2), \fBtermios\fP(3), \fBpty\fP(7) .\" .\" FIONBIO const int * .\" FIONCLEX void .\" FIOCLEX void .\" FIOASYNC const int * .\" from serial.c: .\" TIOCSERCONFIG void .\" TIOCSERGWILD int * .\" TIOCSERSWILD const int * .\" TIOCSERGSTRUCT struct async_struct * .\" TIOCSERGETMULTI struct serial_multiport_struct * .\" TIOCSERSETMULTI const struct serial_multiport_struct * .\" TIOCGSERIAL, TIOCSSERIAL (see above) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot , Jean-Philippe MENGUAL et Jean-Pierre Giraud . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .