Skip to content
Syscall BSD#54

svc · unix #54

ioctl

Émet une requête de contrôle propre au pilote sur l'objet noyau associé à un descripteur de fichier.

Prototype

int ioctl(int fd, u_long com, caddr_t data);

Retour: int

Arguments

NameTypeDirDescription
fdint-
comu_long-
datacaddr_t-

Historique des versions

XNU tagmacOS#
xnu-1456.1.26macOS 10.6 Snow Leopard54
xnu-1486.2.1154
xnu-1504.15.354
xnu-1504.3.1254
xnu-1504.7.454
xnu-1504.9.1754
xnu-1504.9.2654
xnu-1504.9.3754

Exemples

C — terminal window size

struct winsize ws;
ioctl(STDOUT_FILENO, TIOCGWINSZ, &ws);

Notes

Chaque pilote définit ses propres numéros de requête via les macros _IO/_IOR/_IOW/_IOWR. ioctl est l'API principale pour le contrôle des terminaux (TIOC*), la configuration des sockets (SIOC*), la géométrie disque (DKIOC*) et BPF. Beaucoup de requêtes exigent root ou des entitlements précis; SIP restreint en plus les binaires non signés pour les opérations privilégiées DKIOC.

Détection

syscall::ioctl:entry en DTrace expose le numéro de requête; corréler avec sys/ioccom.h pour décoder direction et groupe. Pas d'évènement ES natif.

API associées

fcntlopentcgetattrtcsetattrselect