.\" -*- coding: UTF-8 -*- .\" Copyright 2002 Walter Harms .\" and Andries Brouwer . .\" .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) .\" Distributed under GPL .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH IOCTL_TTY 2 "15 septembre 2017" Linux "Manuel du programmeur Linux" .SH NOM ioctl_tty \- Ioctls pour les terminaux et lignes série .SH SYNOPSIS \fB#include \fP .PP \fBint ioctl(int \fP\fIfd\fP\fB, int \fP\fIcmd\fP\fB, ...);\fP .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. Utiliser les interfaces POSIX décrites dans \fBtermios\fP(3) si possible. .SS "Récupérer et positionner les attributs d'un terminal" .TP \fBTCGETS struct termios *\fP\fIargp\fP Équivalent à \fItcgetattr(fd, argp)\fP. .br Récupérer la configuration du port série courant. .TP \fBTCSETS const struct termios *\fP\fIargp\fP Équivalent à \fItcsetattr(fd, TCSANOW, argp)\fP. .br Configurer le port série courant. .TP \fBTCSETSW const struct termios *\fP\fIargp\fP Équivalent à \fItcsetattr(fd, TCSADRAIN, argp)\fP. .br Laisser le tampon de sortie se vider, puis configurer le port série courant. .TP \fBTCSETSF const struct termios *\fP\fIargp\fP Équivalent à \fItcsetattr(fd, TCSAFLUSH, argp)\fP. .br Laisser le tampon de sortie se vider, abandonner toute entrée en cours, puis configurer le port série courant. .PP Les quatre ioctls suivants sont équivalents à \fBTCGETS\fP, \fBTCSETS\fP, \fBTCSETSW\fP et \fBTCSETSF\fP, à l'exception qu'ils prennent une structure \fIstruct termio\ *\fP plutôt que \fIstruct termios\ *\fP. .IP \fBTCGETA struct termio *\fP\fIargp\fP .IP \fBTCSETA const struct termio *\fP\fIargp\fP .IP \fBTCSETAW const struct termio *\fP\fIargp\fP .IP \fBTCSETAF const struct termio *\fP\fIargp\fP .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 struct termios *\fP\fIargp\fP Récupérer l'état du verrou de la structure \fItermios\fP du terminal. .TP \fBTIOCSLCKTRMIOS const struct termios *\fP\fIargp\fP 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). .PP Les constantes et structures suivantes sont définies dans \fI\fP. .TP \fBTIOCGWINSZ struct winsize *\fP\fIargp\fP Récupérer la taille de la fenêtre. .TP \fBTIOCSWINSZ const struct winsize *\fP\fIargp\fP 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 int \fP\fIarg\fP Équivalent à \fItcsendbreak(fd, arg)\fP. .br 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 int \fP\fIarg\fP La «\ version POSIX\ » de \fBTCSBRK\fP. Elle traite le paramètre non nul \fIarg\fP 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 void\fP Activer les interruptions, c'est\-à\-dire commencer à envoyer des bits nuls. .TP \fBTIOCCBRK void\fP Désactiver les interruptions, c'est\-à\-dire arrêter d'envoyer les bits nuls. .SS "Contrôle de flux logiciel" .TP \fBTCXONC int \fP\fIarg\fP Équivalent à \fItcflow(fd, arg)\fP. .br 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 int *\fP\fIargp\fP Récupérer le nombre d'octets dans le tampon d'entrée. .TP \fBTIOCINQ int *\fP\fIargp\fP Identique à \fBFIONREAD\fP. .TP \fBTIOCOUTQ int *\fP\fIargp\fP Récupérer le nombre d'octets dans le tampon de sortie. .TP \fBTCFLSH int \fP\fIarg\fP Équivalent à \fItcflush(fd, arg)\fP. .br Consultez \fBtcflush\fP(3) pour la signification de \fBTCIFLUSH\fP, \fBTCOFLUSH\fP et \fBTCIOFLUSH\fP. .SS "Simuler l'entrée" .TP \fBTIOCSTI const char *\fP\fIargp\fP Insérer l'octet donné dans la queue d'entrée. .SS "Rediriger la sortie de la console" .TP \fBTIOCCONS void\fP 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. Dans les versions de Linux antérieures à 2.6.10, n'importe qui peut utiliser cet appel à condition que la sortie ne soit pas déjà redirigée\ ; depuis la version 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 int \fP\fIarg\fP 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 void\fP 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 pid_t *\fP\fIargp\fP En cas de succès, équivalent à \fI*argp = tcgetpgrp(fd)\fP. .br Récupérer l'identifiant du groupe de processus au premier plan sur ce terminal. .TP \fBTIOCSPGRP const pid_t *\fP\fIargp\fP Équivalent à \fItcsetpgrp(fd, *argp)\fP. .br Définir l'identifiant du groupe de processus au premier plan du terminal. .TP \fBTIOCGSID pid_t *\fP\fIargp\fP 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 void\fP 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 int *\fP\fIargp\fP (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 void\fP Désactiver le mode exclusif. .SS "Paramètres de la ligne («\ line discipline\ »)" .TP \fBTIOCGETD int *\fP\fIargp\fP Récupérer les paramètres de la ligne du terminal. .TP \fBTIOCSETD const int *\fP\fIargp\fP Définir les paramètres de la ligne («\ line discipline\ ») du terminal. .SS "Ioctls pour les pseudoterminaux" .TP \fBTIOCPKT const int *\fP\fIargp\fP 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 ou un unique octet nul 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 .nf TIOCPKT_FLUSHREAD Le tampon de lecture du terminal est vidé. TIOCPKT_FLUSHWRITE Le tampon d'écriture du terminal est vidé. TIOCPKT_STOP La sortie vers le terminal est arrêtée. TIOCPKT_START La sortie vers le terminal est relancée. TIOCPKT_DOSTOP Les caractères de relance et d'arrêt sont \fB^S\fP/\fB^Q\fP. TIOCPKT_NOSTOP Les caractères de relance et d'arrêt ne sont pas \fB^S\fP/\fB^Q\fP. .fi .IP Tant que ce mode 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^S\fP/\fB^Q\fP) en local. .TP \fBTIOCGPKT const int *\fP\fIargp\fP (Depuis Linux 3.8) Renvoyer le paramètre du mode paquet actuel dans l'entier vers lequel pointe \fIargp\fP. .TP \fBTIOCSPTLCK int *\fP\fIargp\fP Positionner (si \fI*argp\fP n'est pas nul) ou effacer (si \fI*argp\fP est zéro) le périphérique esclave du terminal virtuel (voir aussi \fBunlockpt\fP(3)). .TP \fBTIOCGPTLCK int *\fP\fIargp\fP (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 int \fP\fIflags\fP .\" 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 int *\fP\fIargp\fP Récupérer l'état des bits du modem. .TP \fBTIOCMSET const int *\fP\fIargp\fP Définir l'état des bits du modem. .TP \fBTIOCMBIC const int *\fP\fIargp\fP Effacer les bits du modem indiqués. .TP \fBTIOCMBIS const int *\fP\fIargp\fP Positionner les bits du modem indiqués. .PP Les bits suivants sont utilisés par les ioctls ci\-dessus\ : .PP .nf TIOCM_LE DSR (data set ready/line enable) (terminal de transmission de données \- modem \- prêt) TIOCM_DTR DTR (data terminal ready) (terminal de données \- ordinateur \- prêt) TIOCM_RTS RTS (request to send) (demande d'émission) TIOCM_ST Secondary TXD (transmit) (transmission de données) TIOCM_SR Secondary RXD (receive) (réception de données) TIOCM_CTS CTS (clear to send) (prêt à émettre) TIOCM_CAR DCD (data carrier detect) (porteuse détectée) TIOCM_CD voir TIOCM_CAR TIOCM_RNG RNG (ring) (indicateur d'appel) TIOCM_RI voir TIOCM_RNG TIOCM_DSR DSR (data set ready) (terminal de transmission de données \- modem \- prêt) .fi .TP \fBTIOCMIWAIT int \fP\fIarg\fP 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 struct serial_icounter_struct *\fP\fIargp\fP 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 int *\fP\fIargp\fP (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 const int *\fP\fIargp\fP (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 struct tty_struct *\fP\fIargp\fP .\" 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 comme il faut. .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 EXEMPLE Vérifier l’état de DTR sur un port série. .PP .EX #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 .SH "VOIR AUSSI" .\" .\" FIONBIO const int * .\" FIONCLEX void .\" FIOCLEX void .\" FIOASYNC const int * .\" from serial.c: .\" TIOCSERCONFIG void .\" TIOCSERGWILD int * .\" TIOCSERSWILD const int * .\" TIOCSERGSTRUCT struct async_struct * .\" TIOCSERGETLSR int * .\" TIOCSERGETMULTI struct serial_multiport_struct * .\" TIOCSERSETMULTI const struct serial_multiport_struct * .\" TIOCGSERIAL, TIOCSSERIAL (see above) \fBldattach\fP(1), \fBioctl\fP(2), \fBioctl_console\fP(2), \fBtermios\fP(3), \fBpty\fP(7) .SH COLOPHON Cette page fait partie de la publication\ 5.04 du projet \fIman\-pages\fP Linux. Une description du projet et des instructions pour signaler des anomalies et la dernière version de cette page peuvent être trouvées à l'adresse \%https://www.kernel.org/doc/man\-pages/. .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 et Jean-Philippe MENGUAL . 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. 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 .