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

NOM

       tty_ioctl - Ioctl pour les terminaux et lignes serie

SYNOPSIS

       #include <termios.h>

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

DESCRIPTION

       Les  appels  systeme  ioctl(2)  pour  les  terminaux et les ports serie
       acceptent differents parametres possibles. La  plupart  necessitent  un
       troisieme parametre, d'un type variable, appele argp ou arg.

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

   R'ecup'erer et positionner les attributs d'un terminal
       TCGETS    struct termios *argp
              Equivalent a tcgetattr(fd, argp).
              Recupere la configuration du port serie courant.

       TCSETS    const struct termios *argp
              Equivalent a tcsetattr(fd, TCSANOW, argp).
              Configure le port serie courant.

       TCSETSW   const struct termios *argp
              Equivalent a tcsetattr(fd, TCSADRAIN, argp).
              Laisse le tampon de sortie se  vider,  puis  configure  le  port
              serie courant.

       TCSETSF   const struct termios *argp
              Equivalent a tcsetattr(fd, TCSAFLUSH, argp).
              Laisse  le  tampon de sortie se vider, abandonne toute entree en
              court, puis configure le port serie courant.

       Les quatre ioctl suivants sont equivalents a TCGETS, TCSETS, TCSETSW et
       TCSETSF,  a  l'exception  qu'ils prennent une structure struct termio *
       plutot 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 etre verrouillee. Le verrou est
       en  lui-meme  une  structure  termios, dont les bits ou champs non nuls
       indiquent une valeur verrouillee.

       TIOCGLCKTRMIOS struct termios *argp
              Recupere l'etat du verrou de la structure termios du terminal.

       TIOCSLCKTRMIOS const struct termios *argp
              Fixe l'etat du verrou de la structure termios du terminal.  Seul
              un  superutilisateur  (plus  precisement :  un processus avec la
              capacite CAP_SYS_ADMIN)  peut faire cela.

   R'ecup'erer et configurer les tailles de fen^etre
       Les tailles de fenetre sont stockees dans le noyau, mais  ne  sont  pas
       utilisee  par  le  noyau  (sauf  pour  les  consoles  virtuelles,  pour
       lesquelles le noyau met a jour les tailles de fenetre quand  la  taille
       d'une  console  virtuelle  change, par exemple lors du chargement d'une
       nouvelle fonte).

       Les   constantes   et   structures   suivantes   sont   definies   dans
       <sys/ioctl.h>.

       TIOCGWINSZ     struct winsize *argp
              Recupere la taille de la fenetre.

       TIOCSWINSZ     const struct winsize *argp
              Fixe la taille de la fenetre.

       La structure utilisee par ces ioctl est la suivante :

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

       Lorsque  la  taille d'une fenetre change, un signal SIGWINCH est envoye
       au groupe de processus au premier plan.

   Envoyer une interruption (<< break >>)
       TCSBRK    int arg
              Equivalent a tcsendbreak(fd, arg).
              Si le terminal utilise un mode de transmission serie  asynchrone
              et  que  arg  est  nul, envoie une interruption (un flux de bits
              nuls) pendant 0,25 a 0,5 seconde. Si le terminal  n'utilise  pas
              un  mode  de  transmission  serie  asynchrone,  alors  soit  une
              interruption est envoyee, soit la fonction ne fait  rien.  Quand
              arg est non nul, le comportement n'est pas defini.

              (SVr4,  UnixWare,  Solaris et Linux traitent tcsendbreak(fd,arg)
              avec un parametre arg non nul de la meme facon que  tcdrain(fd).
              SunOS  considere  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 exprime en millisecondes. HP-UX ignore arg.)

       TCSBRKP   int arg
              La << version POSIX >> de TCSBRK. Elle traite le  parametre  non
              nul  arg  comme  un  intervalle  de  temps mesure en dixiemes de
              seconde et ne fait rien lorsque le pilote ne  supporte  pas  les
              interruptions.

       TIOCSBRK  void
              Active  les  interruptions,  c'est-a-dire commence a envoyer des
              bits a zero.

       TIOCCBRK  void
              Desactive les interruptions, c'est-a-dire arrete  d'envoyer  les
              bits nuls.

   Contr^ole de flux logiciel
       TCXONC    int arg
              Equivalent a 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
              Recupere le nombre d'octets dans le tampon d'entree.

       TIOCINQ   int *argp
              Identique a FIONREAD.

       TIOCOUTQ  int *argp
              Recupere le nombre d'octets dans le tampon de sortie.

       TCFLSH    int arg
              Equivalent a tcflush(fd, arg).
              Consultez tcflush(3) pour la signification de TCIFLUSH, TCOFLUSH
              et TCIOFLUSH.

   Simuler l'entr'ee
       TIOCSTI   const char *argp
              Insert l'octet donne dans la queue d'entree.

   Rediriger la sortie de la console
       TIOCCONS  void
              Redirige   la  sortie  qui  serait  alle  vers  /dev/console  ou
              /dev/tty0   vers   un   terminal   donne.   S'il   s'agit   d'un
              pseudoterminal  maitre, envoie a l'esclave. Dans les versions de
              Linux anterieures a 2.6.10,  n'importe  qui  peut  utiliser  cet
              appel  a  condition  que  la sortie ne soit pas deja redirigee ;
              depuis  la  version  2.6.10,  seul  une   superutilisateur   (un
              processus  avec  la  capacite CAP_SYS_ADMIN) peut l'utiliser. Si
              elle  a  deja  ete  redirigee,  EBUSY  est  renvoye,   mais   la
              redirection  peut  etre  arretee  en utilisant cet ioctl avec fd
              pointant vers /dev/console ou /dev/tty0.

   Terminal de contr^ole
       TIOCSCTTY int arg
              Fait du terminal donne le  terminal  de  controle  du  processus
              appelant.  Le  processus appelant doit etre un leader de session
              et ne doit pas  deja  avoir  de  terminal  de  controle.  Si  ce
              terminal  est  deja le terminal de controle d'une autre session,
              alors l'ioctl echoue avec le code d'erreur EPERM,  a  moins  que
              l'appelant  soit un superutilisateur (plus precisement : il a la
              capacite CAP_SYS_ADMIN) et que arg vaille  1.  Dans  ce  dernier
              cas,  le  terminal  est  << vole >>,  et tous les processus pour
              lesquels c'etait le terminal de controle le perde.

       TIOCNOTTY void
              Si le terminal donne est le terminal de  controle  du  processus
              appelant, abandonne ce terminal de controle. Si le processus est
              un leader de session, alors SIGHUP et SIGCONT seront envoyes  au
              groupe de processus au premier plan, et tous les processus de la
              session perdent leur terminal de controle.

   Groupe de processus et identifiant de session
       TIOCGPGRP pid_t *argp
              En cas de succes, equivalent a *argp = tcgetpgrp(fd).
              Recupere l'identifiant du groupe de processus  au  premier  plan
              sur ce terminal.

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

       TIOCGSID  pid_t *argp
              Recupere l'identifiant de session  du  terminal  donne.  L'appel
              echouera  avec  pour  erreur  ENOTTY si le terminal n'est pas un
              pseudoterminal maitre et n'est pas notre terminal  de  controle.
              Etrange.

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

       TIOCNXCL  void
              Desactive le mode exclusif.

   Param`etres de la ligne (<< line discipline >>)
       TIOCGETD  int *argp
              Recupere les parametres de la ligne du terminal.

       TIOCSETD  const int *argp
              Fixe les parametres  de  la  ligne  (<< line  discipline >>)  du
              terminal.

   ioctls pour les pseudoterminaux
       TIOCPKT   const int *argp
              Active  (quand *argp n'est pas nul) ou desactive le mode paquet.
              Ne peut etre applique qu'a la partie maitre d'un  pseudoterminal
              (renvoie  ENOTTY  sinon). En mode paquet, chaque read(2) suivant
              renverra un paquet qui contient soit un seul octet  de  controle
              non  nul ou un unique octet nul suivi par les donnees ecrites du
              cote 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 vide.
              TIOCPKT_FLUSHWRITE  Le tampon d'ecriture du terminal est vide.
              TIOCPKT_STOP        La sortie vers le terminal est arretee.
              TIOCPKT_START       La sortie vers le terminal est relancee.
              TIOCPKT_DOSTOP      Les caracteres de relance et d'arret sont ^S/^Q.
              TIOCPKT_NOSTOP      Les caracteres de relance et d'arret ne sont
                                  pas ^S/^Q.

              Tant que ce mode est utilise, la presence  d'information  d'etat
              de  controle  a  lire  du  cote  maitre  peut etre detectee avec
              select(2) pour les conditions exceptionnelles.

              Ce mode est utilise par rlogin(1) et rlogind(8) pour implementer
              l'envoi distant du controle de flux (^S/^Q) en local.

              Les  ioctls  BSD  TIOCSTOP,  TIOCSTART,  TIOCUCNTL et TIOCREMOTE
              n'ont pas ete implementes sous Linux.

   Contr^ole des modems
       TIOCMGET  int *argp
              Recupere l'etat des bits du modem.

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

       TIOCMBIC  const int *argp
              Efface les bits du modem indiques.

       TIOCMBIS  const int *argp
              Positionner les bits du modem indiques.

       Les bits utilises par ces quatre ioctls sont :

       TIOCM_LE        DSR (data set ready/line enable)
                           (terminal de transmission de donnees - modem - pret)
       TIOCM_DTR       DTR (data terminal ready)
                           (terminal de donnees - ordinateur - pret)
       TIOCM_RTS       RTS (request to send)
                           (demande d'emission)
       TIOCM_ST        Secondary TXD (transmit)
                           (transmission de donnees)
       TIOCM_SR        Secondary RXD (receive)
                           (reception de donnees)
       TIOCM_CTS       CTS (clear to send)
                           (pret a emettre)
       TIOCM_CAR       DCD (data carrier detect)
                           (porteuse detectee)
       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 donnees - modem - pret)

   Marquer une ligne comme 'etant locale
       TIOCGSOFTCAR   int *argp
              (GSOFTCAR : << Get SOFTware CARrier flag >>) Recupere l'etat  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 desactive, le signal de detection
       de porteuse (DCD) est  significatif  et  un  appel  a  open(2)  sur  le
       terminal  correspondant  sera  bloque  tant  que  le  signal  DCD  sera
       maintenu, a moins que le drapeau O_NONBLOCK soit fourni. Si CLOCAL  est
       positionne,  la  ligne  se  comporte  comme  si  DCD  etait maintenu en
       permanence. Le drapeau  logiciel  pour  la  porteuse  est  generalement
       positionne  pour  les peripheriques locaux et desactive pour les lignes
       par modem.

   Sp'ecifique `a Linux
       Pour l'ioctl TIOCLINUX, reportez-vous a console_ioctl(4).

   D'ebogage du noyau
       #include <linux/tty.h>

       TIOCTTYGSTRUCT struct tty_struct *argp
              Recupere la structure tty_struct correspondant a fd.

VALEUR RENVOY'EE

       L'appel systeme ioctl(2) renvoie 0 en cas de succes. En  cas  d'erreur,
       il renvoie -1 et positionne errno comme il faut.

ERREURS

       EINVAL Parametre de commande non valable.

       ENOIOCTLCMD
              Commande inconnue.

       ENOTTY fd inapproprie.

       EPERM  Droits insuffisants.

EXEMPLE

       Verifier la condition DTR sur un port serie.

       #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 positionne");
           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       etre       trouvees      a      l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis 2010, cette traduction est maintenue a l'aide  de  l'outil  po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   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'equipe francophone de traduction de Debian (2006-2009).

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

       Vous  pouvez  toujours avoir acces a la version anglaise de ce document
       en utilisant la commande << man -L C <section> <page_de_man> >>.