Provided by: manpages-nl-dev_4.27.0-1_all bug

NAAM

       ioctl - manipuleer apparaat

BIBLIOTHEEK

       Standard C bibliotheek  (libc, -lc)

SAMENVATTING

       #include <sys/ioctl.h>

       int ioctl(int fd, unsigned long op, ...);  /* glibc, BSD */
       int ioctl(int fd, int op, ...);            /* musl, andere UNIX */

BESCHRIJVING

       De  ioctl()  functie  manipuleert  de  onderliggende  apparaat  parameters van speciale bestanden. In heb
       bijzonder veel eigenschappen van speciale teken bestanden (b.v.  terminals)  kunnen  bepaald  worden  met
       ioctl() verzoeken. Het argument bi moet een open bestandsindicator zijn.

       Het  tweede argument is een apparaat-afhankelijke aanvraag code. Het derde argument is een wijzer (zonder
       type) naar het geheugen. Traditioneel is het char *argp (van de tijd  voordat void * geldig  C  was),  en
       het wordt zo genoemd in deze discussie.

       Een  ioctl() verzoek heeft in zichzelf gecodeerd of het argument een in parameter of uit parameter is, en
       de grootte van het argument argp in bytes. Macro's en definities die gebruikt worden in het  opgeven  van
       een ioctl() verzoek zijn te vinden in het bestand <sys/ioctl.h>. Zie OPMERKINGEN.

EIND WAARDE

       Meestal  wordt  bij succes een nul teruggegeven. Een aantal ioctl() operaties gebruiken de uitvoer waarde
       als een uitvoer parameter en geven een niet-negatieve  waarde  terug  bij  succes.  Bij  falen  wordt  -1
       teruggegeven en errnowordt overeenkomstig gezet.

FOUTEN

       EBADF  bb is geen geldige bestandsbeschrijving.

       EFAULT argp verwijst naar een ontoegankelijk geheugen gebied.

       EINVAL request of argp is ongeldig.

       ENOTTY bi is niet verbonden met een karakter speciaal apparaat.

       ENOTTY Het  opgegeven  verzoek  is  niet  van  toepassing op het object waar de bestandsindicator bi naar
              wijst.

VERSIES

       Argumenten, uitvoerwaarden en semantiek van  ioctl(2)  wisselen  naar  gelang  het  betreffende  apparaat
       stuurprogramma   (de aanroep wordt gebruikt als een goed-voor-de-rest voor handelingen die niet netjes in
       het Unix stroom Invoer/Uitvoer model passen).

VOLDOET AAN

       Geen.

GESCHIEDENIS

       Versie 7 AT&T UNIX heeft
           ioctl(int bi, int verzoek, struct sgttyb *argp);
       ( struct sgttyb werd historisch gebruikt door  stty(2)  en gtty(2), en is een polymorf per bewerkingstype
       (net als een void *  als het beschikbaar zou zijn geweest)).

       Syslll documenten arg zonder enig type.

       4.3BSD heeft
           ioctl(int bi, unsigned long verzoek, char *argp);
       (met char * vergelijkbaar als voor void *.

       SysVr4 heeft
           int ioctl(int bi, int verzoek, ... /* arg */);

OPMERKINGEN

       Om deze systeem aanroep te gebruiken moet men een open bestandsbeschrijving hebben, Vaak heeft de open(2)
       niet gewenste neven effecten, die vermeden kunnen worden onder Linux door het meegeven van de  O_NONBLOCK
       vlag.

   ioctl structure
       Ioctl  verzoek  waarden  zijn  32-bits constanten. In principe zijn deze constanten volledig willekeurig,
       hoewel men er enige structuur in heeft proberen in te bouwen.

       De oude Linux situatie bestond uit veelal 16-bit constanten, waarbij het laatste byte een  serieel  getal
       was,  en het voorafgaande byte was de type aanduiding van het betreffende stuurprogramma. Soms werden als
       belangrijkste getallen gebruikt: 0x03 voor de HDIO_* ioctls, 0x06 voor de LP* ioctls. En soms werden  een
       of meerdere ASCII tekens  gebruikt. Bij voorbeeld, TCGETS heeft waarde x00005401, met 0x54 = 'T' wijzende
       op  het  terminal  stuurprogramma,  en  CYGETTIMEOUT  heeft  waarde   0x00435906, met 0x43 0x59 = 'C' 'Y'
       wijzende op het cyclade stuurprogramma.

       Later (0.98p5) werd meer informatie in het getal ingebouwd. Een heeft 2  richting  bits  (00:  geen,  01:
       schrijf,  10:  lees,  11:  lees/schrijf)  gevolgd  door de 14 bits grootte (aangevende de grootte van het
       argument), gevolgd door een 8-bit type (die verzamelen de ioctls in  groepen  met  een  gemeenschappelijk
       doel or een gemeenschappelijk stuurprogramma), en een 8-bit serieel getal,

       De   macro´s   die   de   structuur   beschrijven   staan   in  <asm/ioctl.h>  en  zijn  _IO(type,nr)  en
       {_IOR,_IOW,_IOWR}(type,nr,size).  Ze gebruiken sizeof(size) waarbij dat een verkeerde  benaming  is:  dit
       derde argument is een  data type.

       Let  op  dat  de  grootte  bits  erg onbetrouwbaar zijn: in veel gevallen zijn ze verkeerd, ofwel door de
       macro´s met fouten die sizeof(sizeof(struct)) gebruiken, ofwel door gebruik van geërfde waarden.

       Dus, het lijkt erop dat de nieuwe structuur alleen nadelen gaf: het helpt  in  bij  controles,  maar  het
       zorgt voor variërende waarden voor de diverse architecturen.

ZIE OOK

       execve(2),   fcntl(2),   ioctl_console(2),   ioctl_fat(2),  ioctl_fs(2),  ioctl_fsmap(2),  ioctl_nsfs(2),
       ioctl_tty(2), ioctl_userfaultfd(2), ioctl_eventpoll(2), open(2), sd(4), tty(4)

VERTALING

       De Nederlandse vertaling van deze handleiding is geschreven door Jos  Boersema  <joshb@xs4all.nl>,  Mario
       Blättermann <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>

       Deze  vertaling  is  vrije  documentatie;  lees  de GNU General Public License Version 3 of later over de
       Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID.

       Indien U fouten in de vertaling van deze handleiding zou  vinden,  stuur  een  e-mail  naar  debian-l10n-
       dutch@lists.debian.org.

Linux man-pagina's 6.9.1                          13 juni 2024                                          ioctl(2)