Provided by: manpages-nl_20051127-4_all
 

NAAM

        fcntl - manipuleer bestandindicator
 

OVERZICHT

        #include <unistd.h>
        #include <fcntl.h>
 
        int fcntl(int bi, int opd);
        int fcntl(int bi, int opd, long arg);
        int fcntl(int bi, int opd, struct flock * grendel);
 

BESCHRIJVING

        fcntl  voert  1 van verschillende opdrachten uit op bi.  De betreffende
        opdracht wordt bepaald door opd:
 
        F_DUPFD  {kopieer   bi}   Vind   de   laagst   genummerde   beschikbare
                 bestandindicator  groter  of  gelijk  aan  arg en maak het een
                 kopie van bi.  Dit is een andere vorm van dup2(2)  die  {dup2}
                 precies de bestandindicator die opgegeven wordt gebruikt.
 
                 De  oude  en  nieuwe beschrijvers mogen uitwisselbaar gebruikt
                 worden.  Ze  delen  grendels,  bestand  positie  pointers   en
                 vlaggen;  bijvoorbeeld: als de bestand positie veranderd wordt
                 met lseek voor 1 van de beschrijvers dan  is  de  positie  ook
                 veranderd voor de andere.
 
                 De twee beschrijvers delen echter niet de sluit-bij-uitvoering
                 vlag.  De sluit-bij-uitvoering vlag van de kopie is  uit,  wat
                 betekend dat hij niet gesloten wordt bij uitvoering.
 
                 Bij success wordt de nieuwe beschrijver teruggegeven.
 
        F_GETFD  {krijg   bi}   Lees  de  sluit-bij-uitvoering  vlag.  Als  het
                 FD_CLOEXEC {sluit-bij-uitvoeren} bit 0  is,  zal  het  bestand
                 open  blijven door een exec heen, anders zal het gesloten wor‐
                 den.
 
        F_SETFD  {zet vlag} Zet de sluit-bij-uitvoering  vlag  naar  de  waarde
                 bepaald door het FD_CLOEXEC bit van arg.
 
        F_GETFL  {krijg  vlaggen}  Lees  de  beschrijvers vlaggen (alle vlaggen
                 (zoals gezet door open(2)) worden teruggegeven).
 
        F_SETFL  {zet vlaggen} Zet  de  beschrijvers  vlaggen  naar  de  waarde
                 bepaald  door  arg.   Alleen  O_APPEND {toevoegen}, O_NONBLOCK
                 {niet blokkeren} en O_ASYNC  {niet-gelijktijdig}  mogen  gezet
                 worden; de andere vlaggen blijven onaangeroerd.
 
                 De  vlaggen  worden  gedeeld door kopieen (gemaakt met dup(2),
                 fork(2), enz.) van dezelfde bestandindicator.
 
                 De vlaggen  en  hun  woordbetekenissen  worden  beschreven  in
                 open(2).
 
        F_GETLK {krijg grendel}, F_SETLK {zet grendel} en F_SETLKW {zet grendel
        wacht}  worden  gebruikt  om   in-overeenstemming-bestand-grendels   te
        beheren.   Het  derde  argument  lock  is  een pointer naar een "struct
        flock" {structuur f grendel}.  (die kan worden overschreven  door  deze
        aanroep).
 
        F_GETLK
               {krijg  grendel} Geef de "flock" structuur die ons weerhoudt van
               het krijgen van de grendel,  of  zet  het  l_type  veld  van  de
               grendel naar F_UNLCK {open-grendel} als er geen beletsel is.
 
        F_SETLK
               {zet  grendel} De grendel wordt gezet (als l_type, F_RDLCK {lees
               grendel} of F_WRLCK {schrijf grendel} is) of gewist (wanneer het
               F_UNLCK  {open-slot}  is).  Als de grendel van iemand anders is,
               geeft deze aanroep -1 terug en zet errno naar  EACCES  {toegang}
               of EAGAIN {nogmaals}.
 
        F_SETLKW
               {zet  grendel  wacht}  Net  als  F_SETLK,  {zet grendel} maar in
               plaats van een fout teruggevend wachten we tot de  grendel  open
               gaat.  Als een signaal dat afgevangen zal worden ontvangen wordt
               terwijl fcntl aan het  wachten  is,  wordt  het  onderbroken  en
               (nadat  de  signaal behandelaar terugkeerde) keert het onmiddel‐
               lijk terug (met teruggave van waarde -1  en  wordt  errno  gezet
               naar EINTR {onderbroken}).
 
        F_GETOWN  {krijg eigen}, F_SETOWN {zet eigen}, F_GETSIG {krijg signaal}
        en F_SETSIG {zet signaal} worden gebruikt  om  In/Uit  beschikbaarheids
        signalen te beheren:
 
        F_GETOWN
               {krijg  eigen}  Krijg  het  proces ID of proces groep, momenteel
               SIGIO  en  SIGURG  ontvangend   voor   gebeurtenissen   met   de
               bestandindicator  bi.   Proces  groepen  worden teruggegeven als
               negatieve waardes.
 
        F_SETOWN
               {zet eigen} Zet het proces ID of de proces groep die de SIGIO en
               SIGURG   signalen  zal  ontvangen  voor  gebeurtenissen  met  de
               bestandindicator  bi.   Proces  groepen   worden   gegeven   als
               negatieve waardes.  (F_SETSIG {zet sign.} kan gebruikt worden om
               een ander signaal op te geven in plaats van SIGIO.)
 
               Als je de O_ASYNC {niet-gelijktijdig} vlag op een bestandindica‐
               tor zet (of door deze vlag met de open(2) aanroep te leveren, of
               met gebruik van de F_SETFL {zet vlaggen}  opdracht  van  fcntl),
               dan zal een SIGIO signaal gezonden worden telkens wanneer invoer
               of uitvoer mogelijk wordt voor die bestandindicator.
 
               Het proces of de proces groep die het signaal zal ontvangen  kan
               gekozen worden met gebruik van de F_SETOWN opdracht van de fcntl
               functie. Als een bestandindicator een socket is, dan bepaald dit
               ook  de ontvanger van SIGURG signalen die afgeleverd worden wan‐
               neer  "out-of-band"  {buiten  band}  gegevens  aankomen  op  het
               socket.  (SIGURG  wordt gezonden en elke situatie waar select(2)
               zou rapporteren dat het socket in een aparte  toestand  verkeerd
               {"exceptional condition"}.)
 
               Als  de  bestandindicator  overeenkomt met een terminal {"termi‐
               nal"} apparaat, dan worden SIGIO signalen naar de voorgrond pro‐
               ces groep van het terminal gezonden.
 
        F_GETSIG
               {krijg  signaal} Krijg het signaal toegezonden wanneer invoer of
               uitvoer mogelijk wordt. Een waarde van nul  betekend  dat  SIGIO
               gezonden  wordt.  Elke  andere waarde (inclusief SIGIO) wordt in
               plaats daarvan het gezonden signaal,  en  in  dit  geval  worden
               extra informatie beschikbaar voor de signaal behandelaar als die
               geïnstalleerd werd met SA_SIGINFO.
 
        F_SETSIG
               {zet signaal} Zet het verzonden signaal voor wanneer  invoer  of
               uitvoer  mogelijk  wordt.  Een waarde van nul betekend het stan‐
               daard  {eng:  default}  SIGIO  signaal.   Elke   andere   waarde
               (inclusief SIGIO) wordt in plaats daarvan het verzonden signaal,
               en in dit geval worden extra informatie beschikbaar voor de sig‐
               naal behandelaar als die geïnstalleerd werd met SA_SIGINFO.
 
               Door  F_SETSIG  te gebruiken met een niet-nul waarde, en SA_SIG‐
               INFO voor de signaal behandelaar te zetten  (zie  sigaction(2)),
               worden extra informatie over In/Uit gebeurtenissen aan de behan‐
               delaar gegeven in een siginfo_t structuur.  Als het si_code veld
               aangeeft  dat  de  bron SI_SIGIO is, dan geeft het si_fd veld de
               bestandindicator die verbonden is  met  de  gebeurtenis.  Anders
               zijn  er geen mogelijkheden om te achterhalen welke bestandindi‐
               cators wachten, en moet je de gebruikelijke  (select(2)  {kies},
               poll(2)  {raadpleeg},  read(2)  {lees} mechanismes gebruiken met
               O_NONBLOCK {niet blokkeer}  gezet  enz.)  om  te  bepalen  welke
               bestandindicators beschikbaar zijn voor In/Uit.
 
               Door  het  kiezen van een POSIX.1b echte-tijd signaal (waarde >=
               SIGRTMIN) kunnen meerdere In/Uit gebeurtenissen in een  wachtrij
               gezet  worden met gebruik van dezelfde signaal nummers. (In-een-
               wachtrij-zetten is afhankelijk van  het  beschikbare  geheugen).
               Extra informatie zijn voorhanden als SA_SIGINFO gezet is voor de
               signaal behandelaar, net als boven.
 
        Gebruik makend van deze mechanismes  kan  een  programma  een  volledig
        ongelijktijdige  {"asynchronous"} In/Uit verwezijnlijken zonder meestal
        select(2) of poll(2) te gebruiken.
 
        Het gebruik van O_ASYNC, F_GETOWN, F_SETOWN is eigen aan BSD en  Linux.
        F_GETSIG  en  F_SETSIG  zijn  Linux-eigen.  POSIX heeft ongelijktijdige
        In/Uit en de aio_sigevent structuur om soortgelijke dingen te bereiken;
        deze  zijn  ook voorhanden in Linux, als onderdeel van de GNU C biblio‐
        theek (Glibc).
        Bij een geslaagde aanroep hangt de terugkeer-waarde af van de operatie:
 
        F_DUPFD  De nieuwe beschrijver.
 
        F_GETFD  Waarde van vlag.
 
        F_GETFL  Waarde van vlaggen.
 
        F_GETOWN Waarde van beschrijver eigenaar.
 
        F_GETSIG Waarde  van verzonden signaal wanneer lees of schrijf mogelijk
                 wordt, of nul voor het traditionele SIGIO gedrag.
 
        Alle ander opdrachten
                 Nul.
 
        Bij falen wordt -1 teruggegeven en errno wordt naar behoren gezet.
 

FOUTEN

        EACCES   {toegang} Opdracht wordt verboden  door  grendels  van  andere
                 processen.
 
        EAGAIN   {opnieuw}  Opdracht  wordt verboden omdat het bestand door een
                 ander proces  in  geheugen-kaart  {"memory-directorieped"}  is
                 gebracht.
 
        EBADF    {slechte bi} bi is niet een open bestandindicator.
 
        EDEADLK  {patstelling}  Het  werd  bemerkt  dat  de  opgegeven F_SETLKW
                 opdracht een patstelling zou veroorzaken.
 
        EFAULT   {fout} grendel ligt buiten door u toegankelijke adres  ruimte.
 
        EINTR    {onderbroken} Voor F_SETLKW, de opdracht werd onderbroken door
                 een signaal.   Voor  F_GETLK  en  F_SETLK,  de  opdracht  werd
                 onderbroken door een signaal voordat de grendel werd getest of
                 verkregen. Zeer waarschijnlijk tijdens  het  vergrendelen  van
                 een  op-afstand  {"remote"} bestand (grendelen over NFS), maar
                 kan soms ook locaal {"local"} gebeuren.
 
        EINVAL   {ongeldig} Voor F_DUPFD, arg is negatief of is groter  dan  de
                 maximum  toegestane  waarde.  Voor  F_SETSIG,  arg is niet een
                 toegestaan signaal nummer.
 
        EMFILE   {max bestand} Voor F_DUPFD, het proces heeft  al  het  maximum
                 aantal bestandindicators open.
 
        ENOLCK   {geen  grendel} Teveel segment grendels open, grendel tabel is
                 vol, of een op-afstand protocol faalde  (o.a.  grendelen  over
                 NFS).
 
        EPERM    {toestemming}  Geprobeerd om de O_APPEND vlag te wissen op een
                 bestand dat  de  alleen-toevoegen  {"append-only"}  eigenschap
                 gezet heeft
 

OPMERKINGEN

        De fouten teruggegeven door dup2 zijn verschillend van die teruggegeven
        door F_DUPFD.
        SVr4, SVID, POSIX, X/OPEN, BSD  4.3.   Alleen  de  opdrachten  F_DUPFD,
        F_GETFD, F_SETFD, F_GETFL, F_SETFL, F_GETLK, F_SETLK en F_SETLKW worden
        opgegeven door POSIX.1.  F_GETOWN  en  F_SETOWN  zijn  BSD-ismes,  niet
        ondersteund  in  SVr4;  F_GETSIG  en F_SETSIG zijn eigen aan Linux.  De
        vlaggen legaal voor F_GETFL/F_SETFL zijn die, ondersteund door  open(2)
        en ze wisselen tussen deze systemen; O_APPEND, O_NONBLOCK, O_RDONLY, en
        O_RDWR worden opgegeven door POSIX.1.  SVr4  ondersteund  verschillende
        andere keuzes en vlaggen niet hier beschreven.
 
        SVr4 beschrijft extra EIO, ENOLINK en EOVERFLOW fouttoestanden.
 

ZIE

        dup2(2) {verdubbel}, flock(2) {vergrendel}, open(2) {open}, socket(2)
 

VERTALING

        Dit is een handleiding uit manpages-dev 1.29.
 
        Alles wat tussen ‘{’..‘}’ staat is aanvullende vertaling, en hoort niet
        bij de originele handleiding.  Email naar <manpages-nl@nl.linux.org>.
 
        $Id: fcntl.2,v 1.1.1.1 2004/03/21 21:02:25 cor Exp $