.\" -*- coding: UTF-8 -*- .\" Copyright (c) 1980, 1991 Regents of the University of California. .\" All rights reserved. .\" .\" SPDX-License-Identifier: BSD-4-Clause-UC .\" .\" @(#)ioctl.2 6.4 (Berkeley) 3/10/91 .\" .\" Modified 1993-07-23 by Rik Faith .\" Modified 1996-10-22 by Eric S. Raymond .\" Modified 1999-06-25 by Rachael Munns .\" Modified 2000-09-21 by Andries Brouwer .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH ioctl 2 "13 juin 2024" "Pages du manuel de Linux 6.9.1" .SH NOM ioctl – Contrôler les périphériques .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP .P \fBint ioctl(int \fP\fIdesc_fic\fP\fB, unsigned long \fP\fIopération\fP\fB, ...);\fP\f[R] /* glibc, BSD */\fR \fBint ioctl(int \fP\fIdesc_fic\fP\fB, int \fP\fIopération\fP\fB, ...);\fP\f[R] /* musl, autres UNIX */\fR .fi .SH DESCRIPTION L'appel système \fBioctl\fP() modifie le comportement des périphériques sous\(hyjacents des fichiers spéciaux. En particulier, de nombreuses caractéristiques des fichiers spéciaux en mode caractère (par exemple des terminaux) peuvent être contrôlées avec des opérations \fBioctl\fP(). L'argument \fIdesc_fic\fP doit être un descripteur de fichier ouvert. .P Le second argument est le code de l’opération dépendant du périphérique. Le troisième argument est un pointeur non typé. Il est traditionnellement défini en \fBchar *\fP\fIargp\fP (cela date de l'époque avant que \fBvoid *\fP soit du C valable), et sera ainsi nommé dans le reste de cette page. .P Une \fIopération\fP \fBioctl\fP() encapsule le fait que l'argument est un paramètre d'\fIentrée\fP ou de \fIsortie\fP ainsi que la taille de l'argument \fIargp\fP en octets. Les macros et définitions décrivant une \fIopération\fP \fBioctl\fP() se trouvent dans le fichier \fI\fP. Voir NOTES. .SH "VALEUR RENVOYÉE" En général, \fBioctl\fP renvoie \fB0\fP s'il réussit. Certaines opérations \fBioctl\fP utilisent la valeur de retour comme paramètre de sortie et renvoient une valeur non négative si elles réussissent. En cas d'échec, \fB\-1\fP est renvoyé et \fIerrno\fP est positionnée pour indiquer l'erreur. .SH ERREURS .TP \fBEBADF\fP \fIfd\fP n'est pas un descripteur de fichier valable. .TP \fBEFAULT\fP \fIargp\fP pointe en dehors de l'espace d'adressage valable. .TP \fBEINVAL\fP L’\fIopération\fP ou l'argument \fIargp\fP ne sont pas valables. .TP \fBENOTTY\fP \fIdesc_fic\fP n'est pas associé avec un fichier spécial en mode caractère. .TP \fBENOTTY\fP L’opération indiquée ne s'applique pas au type d'objet associé avec le descripteur \fIdesc_fic\fP. .SH VERSIONS Les arguments, les valeurs de retour et la sémantique de \fBioctl\fP() varient en fonction du pilote de périphérique concerné (cet appel système est utilisé pour encapsuler les opérations qui ne se conforment pas bien au modèle UNIX des entrées/sorties par flux). .SH STANDARDS Aucun. .SH HISTORIQUE La version\ 7 d’UNIX AT&T a .PD 0 .in +4n .nf \fBioctl(int \fP\fIdesc_fic\fP\fB, int \fP\fIopération\fP\fB, struct sgttyb *\fP\fIargp\fP\fB);\fP .fi .in .P .PD où \fBstruct sgttyb\fP a historiquement été utilisé par \fBstty\fP(2) et \fBgtty\fP(2) et est polymorphe pour le type d’opération (tel qu’un \fBvoid *\fP le serait s’il était disponible). .P SysIII documente \fIarg\fP sans aucun type. .P 4.3BSD a .PD 0 .in +4n .nf \fBioctl(int \fP\fIdesc_fic\fP\fB, unsigned long \fP\fIopération\fP\fB, char *\fP\fIargp\fP\fB);\fP .fi .in .P .PD avec \fBchar *\fP intégré de façon similaire pour \fBvoid *\fP. .P SysVr4 a .PD 0 .in +4n .nf \fBint ioctl(int \fP\fIdesc_fic\fP\fB, int \fP\fIopération\fP\fB, ... /* \fP\fIarg\fP\fB */);\fP .fi .in .P .PD .SH NOTES .\" Pour utiliser cet appel, on a besoin d'un descripteur de fichier ouvert. Souvent, l'appel \fBopen\fP(2) a des effets de bord non désirés, qui peuvent être évités sous Linux en lui passant le drapeau \fBO_NONBLOCK\fP. .SS "Structure ioctl" .\" added two sections - aeb Les valeurs d’\fIopération\fP ioctl sont des constantes 32 bits. En principe, ces constantes sont totalement arbitraires, mais des gens ont essayé de construire une certaine structure avec elles. .P Avant, sous Linux, il y avait principalement des constantes de 16 bits, où le dernier octet est un numéro de série et le(s) précédent(s) octet(s) donne(nt) un type indiquant le pilote. Parfois, le nombre majeur était utilisé : 0x03 pour les ioctls \fBHDIO_*\fP, 0x06 pour les ioctls \fBLP*\fP, et parfois, une ou plusieurs lettres ASCII étaient utilisées. Par exemple, \fBTCGETS\fP a une valeur de 0x00005401, avec 0x54 = \[aq]T\[aq] indiquant le pilote du terminal, et \fBCYGETTIMEOUT\fP a une valeur de 0x00435906, avec 0x43 0x59 = \[aq]C\[aq] \[aq]Y\[aq] indiquant le pilote Cyclades. .P Plus tard (0.98p5), des informations supplémentaires ont été intégrées dans le numéro. L'une a deux bits de direction (00 : aucun, 01 : écriture, 10 : lecture, 11 : lecture/écriture), suivis de 14 bits de taille (donnant la taille de l'argument), suivis d'un autre de type de 8 bits (récupérant les ioctls dans des groupes pour une utilisation générique ou un pilote commun) et d’un numéro de série de 8 bits. .P Les macros décrivant cette structure se trouvent dans \fI\fP. Il s'agit de \fB_IO(type,nr)\fP et \fB{_IOR,_IOW,_IOWR}(type,nr,size)\fP. Elles utilisent \fIsizeof(size)\fP, donc la taille est ici une appellation inappropriée : ce troisième argument est de type donnée. .P Notez que les bits de taille ne sont pas fiables du tout : dans de nombreux cas, ils sont faux, soit du fait de macros boguées qui utilisent \fIsizeof(sizeof(struct))\fP, soit à cause de valeurs patrimoniales. .P Ainsi, il semble que cette nouvelle structure ne procure que des inconvénients : elle n'aide pas à faire des vérifications, mais il entraine des valeurs variables pour les différentes architectures. .SH "VOIR AUSSI" .\" .BR mt (4), \fBexecve\fP(2), \fBfcntl\fP(2), \fBioctl_console\fP(2), \fBioctl_fat\fP(2), \fBioctl_fs\fP(2), \fBioctl_fsmap\fP(2), \fBioctl_nsfs\fP(2), \fBioctl_tty\fP(2), \fBioctl_userfaultfd\fP(2), \fBioctl_eventpoll\fP(2), \fBopen\fP(2), \fBsd\fP(4), \fBtty\fP(4) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot , Jean-Philippe MENGUAL et Jean-Paul Guillonneau . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .