Provided by: manpages-fr_3.32d0.2p4-1_all bug

NOM

       tty_ioctl - Ioctl pour les terminaux et lignes série

SYNOPSIS

       #include <termios.h>

       int ioctl(int fd, int cmd, ...);

DESCRIPTION

       Les  appels  système  ioctl(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é argp ou arg.

       Utiliser  des  ioctl  rend  les  programmes  non  portables. Utiliser les interfaces POSIX
       décrites dans termios(3) si possible.

   Récupérer et positionner les attributs d'un terminal
       TCGETS    struct termios *argp
              Équivalent à tcgetattr(fd, argp).
              Récupère la configuration du port série courant.

       TCSETS    const struct termios *argp
              Équivalent à tcsetattr(fd, TCSANOW, argp).
              Configure le port série courant.

       TCSETSW   const struct termios *argp
              Équivalent à tcsetattr(fd, TCSADRAIN, argp).
              Laisse le tampon de sortie se vider, puis configure le port série courant.

       TCSETSF   const struct termios *argp
              Équivalent à tcsetattr(fd, TCSAFLUSH, argp).
              Laisse le tampon de  sortie  se  vider,  abandonne  toute  entrée  en  court,  puis
              configure le port série courant.

       Les  quatre  ioctl  suivants  sont  équivalents  à  TCGETS,  TCSETS, TCSETSW et TCSETSF, à
       l'exception qu'ils prennent une structure struct termio * plutôt que struct termios *.

       TCGETA    struct termio *argp

       TCSETA    const struct termio *argp

       TCSETAW   const struct termio *argp

       TCSETAF   const struct termio *argp

   Verrouiller une structure termios
       La structure termios d'un terminal peut être verrouillée. Le verrou est  en  lui-même  une
       structure termios, dont les bits ou champs non nuls indiquent une valeur verrouillée.

       TIOCGLCKTRMIOS struct termios *argp
              Récupère l'état du verrou de la structure termios du terminal.

       TIOCSLCKTRMIOS const struct termios *argp
              Fixe l'état du verrou de la structure termios du terminal. Seul un superutilisateur
              (plus précisément : un processus avec la capacité CAP_SYS_ADMIN)  peut faire cela.

   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ée 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).

       Les constantes et structures suivantes sont définies dans <sys/ioctl.h>.

       TIOCGWINSZ     struct winsize *argp
              Récupère la taille de la fenêtre.

       TIOCSWINSZ     const struct winsize *argp
              Fixe la taille de la fenêtre.

       La structure utilisée par ces ioctl est la suivante :

           struct winsize {
               unsigned short ws_row;
               unsigned short ws_col;
               unsigned short ws_xpixel;   /* non utilisé */
               unsigned short ws_ypixel;   /* non utilisé */
           };

       Lorsque  la  taille  d'une  fenêtre  change,  un  signal  SIGWINCH est envoyé au groupe de
       processus au premier plan.

   Envoyer une interruption  break »)
       TCSBRK    int arg
              Équivalent à tcsendbreak(fd, arg).
              Si le terminal utilise un mode de transmission série asynchrone et que arg est nul,
              envoie  une  interruption  (un flux de bits nuls) 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 arg est non nul, le
              comportement n'est pas défini.

              (SVr4, UnixWare, Solaris et Linux traitent tcsendbreak(fd,arg)  avec  un  paramètre
              arg  non  nul  de  la  même  façon  que  tcdrain(fd).  SunOS considère arg comme un
              coefficient multiplicateur et envoie un flux de bits arg fois plus long que lorsque
              arg est nul. DG/UX et AIX traite arg (lorsqu'il est non nul) comme un intervalle de
              temps exprimé en millisecondes. HP-UX ignore arg.)

       TCSBRKP   int arg
              La « version POSIX » de TCSBRK. Elle traite le  paramètre  non  nul  arg  comme  un
              intervalle de temps mesuré en dixièmes de seconde et ne fait rien lorsque le pilote
              ne supporte pas les interruptions.

       TIOCSBRK  void
              Active les interruptions, c'est-à-dire commence à envoyer des bits à zéro.

       TIOCCBRK  void
              Désactive les interruptions, c'est-à-dire arrête d'envoyer les bits nuls.

   Contrôle de flux logiciel
       TCXONC    int arg
              Équivalent à tcflow(fd, arg).
              Consultez tcflow(3) pour avoir la signification des valeurs TCOOFF,  TCOON,  TCIOFF
              et TCION.

   Information sur les tampons et vidage
       FIONREAD  int *argp
              Récupère le nombre d'octets dans le tampon d'entrée.

       TIOCINQ   int *argp
              Identique à FIONREAD.

       TIOCOUTQ  int *argp
              Récupère le nombre d'octets dans le tampon de sortie.

       TCFLSH    int arg
              Équivalent à tcflush(fd, arg).
              Consultez tcflush(3) pour la signification de TCIFLUSH, TCOFLUSH et TCIOFLUSH.

   Simuler l'entrée
       TIOCSTI   const char *argp
              Insert l'octet donné dans la queue d'entrée.

   Rediriger la sortie de la console
       TIOCCONS  void
              Redirige  la sortie qui serait allé vers /dev/console ou /dev/tty0 vers un terminal
              donné. S'il s'agit  d'un  pseudoterminal  maître,  envoie  à  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
              une superutilisateur (un processus avec la capacité CAP_SYS_ADMIN) peut l'utiliser.
              Si elle a déjà été redirigée, EBUSY est renvoyé,  mais  la  redirection  peut  être
              arrêtée en utilisant cet ioctl avec fd pointant vers /dev/console ou /dev/tty0.

   Terminal de contrôle
       TIOCSCTTY int arg
              Fait  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.  Si  ce  terminal  est  déjà le terminal de contrôle d'une autre session,
              alors l'ioctl échoue avec le code d'erreur EPERM, à moins que  l'appelant  soit  un
              superutilisateur  (plus  précisément  :  il a la capacité CAP_SYS_ADMIN) et que arg
              vaille 1. Dans ce dernier cas, le terminal est « volé », et tous les processus pour
              lesquels c'était le terminal de contrôle le perde.

       TIOCNOTTY void
              Si  le  terminal donné est le terminal de contrôle du processus appelant, abandonne
              ce terminal de contrôle. Si le processus est un leader de session, alors SIGHUP  et
              SIGCONT  seront  envoyés  au  groupe  de  processus  au  premier  plan, et tous les
              processus de la session perdent leur terminal de contrôle.

   Groupe de processus et identifiant de session
       TIOCGPGRP pid_t *argp
              En cas de succès, équivalent à *argp = tcgetpgrp(fd).
              Récupère l'identifiant du groupe de processus au premier plan sur ce terminal.

       TIOCSPGRP const pid_t *argp
              Équivalent à tcsetpgrp(fd, *argp).
              Fixe l'identifiant du groupe de processus au premier plan du terminal.

       TIOCGSID  pid_t *argp
              Récupère l'identifiant de session du terminal donné.  L'appel  échouera  avec  pour
              erreur  ENOTTY si le terminal n'est pas un pseudoterminal maître et n'est pas notre
              terminal de contrôle. Étrange.

   Mode exclusif
       TIOCEXCL  void
              Met le terminal en mode exclusif. Plus aucun appel open(2) sur le terminal ne  sera
              autorisé.  (Ils  échoueront  avec  l'erreur  EBUSY,  sauf pour un superutilisateur,
              c'est-à-dire un processus ayant la capacité CAP_SYS_ADMIN.)

       TIOCNXCL  void
              Désactive le mode exclusif.

   Paramètres de la ligne  line discipline »)
       TIOCGETD  int *argp
              Récupère les paramètres de la ligne du terminal.

       TIOCSETD  const int *argp
              Fixe les paramètres de la ligne (« line discipline ») du terminal.

   ioctls pour les pseudoterminaux
       TIOCPKT   const int *argp
              Active (quand *argp n'est pas nul) ou  désactive  le  mode  paquet.  Ne  peut  être
              appliqué  qu'à la partie maître d'un pseudoterminal (renvoie ENOTTY sinon). En mode
              paquet, chaque read(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  TIOCPKT_DATA  (0),  il
              s'agit d'un OU logique entre les bits suivants :

              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 ^S/^Q.
              TIOCPKT_NOSTOP      Les caractères de relance et d'arrêt ne sont
                                  pas ^S/^Q.

              Tant  que  ce mode est utilisé, la présence d'information d'état de contrôle à lire
              du  côté  maître  peut  être  détectée   avec   select(2)   pour   les   conditions
              exceptionnelles.

              Ce mode est utilisé par rlogin(1) et rlogind(8) pour implémenter l'envoi distant du
              contrôle de flux (^S/^Q) en local.

              Les  ioctls  BSD  TIOCSTOP,  TIOCSTART,  TIOCUCNTL  et  TIOCREMOTE  n'ont  pas  été
              implémentés sous Linux.

   Contrôle des modems
       TIOCMGET  int *argp
              Récupère l'état des bits du modem.

       TIOCMSET  const int *argp
              Positionner l'état des bits du modem.

       TIOCMBIC  const int *argp
              Efface les bits du modem indiqués.

       TIOCMBIS  const int *argp
              Positionner les bits du modem indiqués.

       Les bits utilisés par ces quatre ioctls sont :

       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)

   Marquer une ligne comme étant locale
       TIOCGSOFTCAR   int *argp
              (GSOFTCAR :  « Get  SOFTware CARrier flag ») Récupère l'état du drapeau CLOCAL dans
              le champ c_cflag de la structure termios.

       TIOCSSOFTCAR   const int *argp
              (SSOFTCAR : « Set SOFTware CARrier flag »)  Positionne  le  drapeau  CLOCAL  de  la
              structure termios si *argp n'est pas nulle, et l'efface dans le cas contraire.

       Si  le  drapeau CLOCAL d'une ligne est désactivé, le signal de détection de porteuse (DCD)
       est significatif et un appel à open(2) sur le terminal correspondant sera bloqué tant  que
       le  signal DCD sera maintenu, à moins que le drapeau O_NONBLOCK soit fourni. Si CLOCAL 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.

   Spécifique à Linux
       Pour l'ioctl TIOCLINUX, reportez-vous à console_ioctl(4).

   Débogage du noyau
       #include <linux/tty.h>

       TIOCTTYGSTRUCT struct tty_struct *argp
              Récupère la structure tty_struct correspondant à fd.

VALEUR RENVOYÉE

       L'appel système ioctl(2) renvoie 0 en cas de succès. En cas d'erreur,  il  renvoie  -1  et
       positionne errno comme il faut.

ERREURS

       EINVAL Paramètre de commande non valable.

       ENOIOCTLCMD
              Commande inconnue.

       ENOTTY fd inapproprié.

       EPERM  Droits insuffisants.

EXEMPLE

       Vérifier la condition DTR sur un port série.

       #include <termios.h>
       #include <fcntl.h>
       #include <sys/ioctl.h>

       int
       main(void)
       {
           int fd, serial;

           fd = open("/dev/ttyS0", O_RDONLY);
           ioctl(fd, TIOCMGET, &serial);
           if (serial & TIOCM_DTR)
               puts("TIOCM_DTR non positionné");
           else
               puts("TIOCM_DTR mis");
           close(fd);
       }

VOIR AUSSI

       ioctl(2), termios(3), console_ioctl(4), pty(7)

COLOPHON

       Cette  page  fait partie de la publication 3.32 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis    2010,    cette   traduction   est   maintenue   à   l'aide   de   l'outil   po4a
       <URL:http://po4a.alioth.debian.org/> par l'équipe de traduction  francophone  au  sein  du
       projet perkamon <URL:http://perkamon.alioth.debian.org/>.

       Christophe   Blaess   <URL:http://www.blaess.fr/christophe/>   (1996-2003),  Alain  Portal
       <URL:http://manpagesfr.free.fr/> (2003-2006). Simon Paillard et  l'équipe  francophone  de
       traduction de Debian (2006-2009).

       Veuillez     signaler     toute     erreur     de     traduction     en     écrivant     à
       <debian-l10n-french@lists.debian.org>  ou  par  un  rapport  de  bogue   sur   le   paquet
       manpages-fr.

       Vous  pouvez  toujours  avoir  accès  à la version anglaise de ce document en utilisant la
       commande « man -L C <section> <page_de_man> ».