Available in

(2) (2)/de (2)/es (2)/fr (2)/ja (2)/ko (2)/nl (2)/pl (2)/ru (2freebsd) (3head) (3perl) (3posix)

TOC

FCNTL(2)                Linux Programmeurs Handleiding                FCNTL(2)



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
              genstalleerd 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 genstalleerd 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).

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 [AT] nl.org>.

       $Id: fcntl.2,v 1.1.1.1 2004/03/21 21:02:25 cor Exp $



Linux                            12 Juli 1999                         FCNTL(2)

COMMENTS

Add your comment here. Whitespace and linebreaks are preserved. URLs are linked automatically.
CAPTCHA

No HTML allowed. URLs will be linked with nofollow attribute. Whitespace is preserved.