Provided by: manpages-nl_20051127-1_all bug

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
                worden.

       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
              onmiddellijk 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
              bestandindicator  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
              wanneer  "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
              {"terminal"}   apparaat,  dan  worden  SIGIO  signalen  naar  de
              voorgrond proces 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
              standaard  {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
              signaal behandelaar als die geïnstalleerd werd met SA_SIGINFO.

              Door  F_SETSIG  te  gebruiken  met  een  niet-nul   waarde,   en
              SA_SIGINFO   voor   de   signaal   behandelaar  te  zetten  (zie
              sigaction(2)),   worden    extra    informatie    over    In/Uit
              gebeurtenissen  aan  de  behandelaar  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  bestandindicators  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
       bibliotheek (Glibc).

TERUGGEEF WAARDE

       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.

VOLDOET AAN

       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 $