Provided by: manpages-fr_3.65d1p1-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
              Définit  l'état  du verrou de la structure termios du terminal. Seul 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
              Définit 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  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. Dans ce cas, arg doit
              valoir zéro.

              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).
              Définit 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 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
              Définit 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.65 du projet man-pages Linux. Une description du projet et des
       instructions     pour     signaler     des     anomalies    peuvent    être    trouvées    à    l'adresse
       http://www.kernel.org/doc/man-pages/.

TRADUCTION

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

       Christophe      Blaess      <http://www.blaess.fr/christophe/>      (1996-2003),       Alain       Portal
       <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> ».

Linux                                           12 novembre 2013                                    TTY_IOCTL(4)