tty_ioctl
Ioctl pour les terminaux et lignes série
- Provided by: manpages-fr (Version: 3.65d1p1-1)
- Report a bug
Ioctl pour les terminaux et lignes série
#include <termios.h>
int ioctl(int fd, int cmd, ...);
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.
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 *.
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.
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>.
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.
(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.)
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.
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.
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)
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.
Pour l'ioctl TIOCLINUX, reportez-vous à console_ioctl(4).
#include <linux/tty.h>
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.
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);
}
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/.
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> ».