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