Provided by:
manpages-fr_3.32d0.2p4-1_all 
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> >>.