Provided by: manpages-nl_20051127-4_all
 

NAAM

        open, creat - openen (en mogelijk maken) van een bestand of apparaat
 

OVERZICHT

        #include <sys/types.h>
        #include <sys/stat.h>
        #include <fcntl.h>
 
        int open(const char *padnaam, int vlaggen);
        int open(const char *padnaam, int vlaggen, mode_t mode);
        int creat(const char *padnaam, mode_t mode);
 

BESCHRIJVING

        De open() systeem aanroep wordt gebruikt om een padnaam om te zetten in
        een bestandindicator  (een  klein,  niet  negatief  geheel  getal,  dat
        gebruikt kan worden in In/Uit zoals met read(2), write(2), enz.).  Wan‐
        neer de aanroep slaagt, wordt de bestandindicator teruggegeven met  het
        laagste  nummer  dat niet door het proces wordt gebruikt op dat moment.
        Deze aanroep maakt een bestand open dat niet gedeeld wordt  met  andere
        processen.  (Maar  gedeelde  open  bestanden  kunnen  ontstaan  door de
        fork(2) systeem aanroep.)  Voor de nieuwe bestandindicator staat  ‘aan’
        dat  hij  open  blijft  dóór  exec*  functies  heen.  (zie fcntl(2)) De
        bestand-positie wordt naar het begin van het bestand gezet.
 
        vlaggen Kan ‘O_RDONLY’, ‘O_WRONLY’ of ‘O_RDWR’  zijn,  respectievelijk:
        open het bestand voor alleen-lezen, alleen-schrijven of lezen-én-schri‐
        jven.
 
        vlaggen Mag ook een bitsgewijze of zijn van één of meer  van  het  vol‐
        gende:
 
        O_CREAT
               {maak}  Als  een bestand met dezelfde naam nog niet bestaat, dan
               wordt het gemaakt.
 
        O_EXCL {uitsluiten} Wanneer gebruikt met O_CREAT en als het bestand  al
               bestaat  is  de  aanroep  fout  en  zal open() falen.  O_EXCL Is
               gebroken op  NFS  bestandsystemen;  programma’s  die  op  O_EXCL
               vertrouwen  om  bestandvergrendelings-opdrachten  uit  te voeren
               bevatten een  wedstrijd  mogelijkheid.  De  oplossing  voor  het
               uitvoeren van ‘atomische’ bestandvergrendelingen met gebruik van
               een slot-bestand is het maken van een uniek bestand in hetzelfde
               bestandsysteem  (met machinenaam en pid), gebruik link(2) om een
               koppeling te maken met het slotbestand. Als link() 0  teruggeeft
               is het slot gelukt. Gebruik anders stat(2) op het unieke bestand
               om te controleren of het  koppelingen  aantal  van  het  bestand
               toegenomen is naar 2, in welk geval het slot ook geslaagd is.
 
        O_NOCTTY
               {geen  controlerende tty} Als padnaam naar een terminal apparaat
               wijst — zie tty(4) — dan zal het niet de controlerende  terminal
               van  het  proces  worden,  ook al heeft het proces geen control‐
               erende terminal.
 
        O_TRUNC
               {afhakken} Als het bestand al bestaat wordt het  afgehakt  (naar
               lengte nul).
 
        O_APPEND
               {toevoegen} Het bestand is geopend in toevoegen-modus. Vóór elke
               write(), wordt de  positie  in  het  bestand  einde-van-bestand,
               alsof  lseek  gebruikt  was.   O_APPEND  Kan leiden tot verpeste
               bestanden  op  NFS  bestandsystemen  als  meer  dan  één  proces
               tegelijk  gegevens  aan  het  einde  toevoegt.  Dat is omdat NFS
               toevoegen-aan-het-einde niet ondersteund, de cliënt kernel  moet
               dus  ‘alsof’  doen  maar dat is onmogelijk zonder een wedstrijd-
               mogelijkheid.
 
        O_NONBLOCK of O_NDELAY
               {niet blokkeren} {geen vertraging} Het bestand wordt geopend  in
               niet-blokkerende  mode.   open()  En andere daaropvolgende oper‐
               aties op de bestandindicator die teruggegeven wordt, zullen  het
               proces niet blokkeren. Voor hoe FIFO’s (pijpen met namen) behan‐
               deld worden, zie ook fifo(4).
 
        O_SYNC {gelijktijdig} Het bestand is geopend voor onmiddellijke In/Uit.
               Elke  write()  naar de opgeleverde bestandindicator zal het aan‐
               roepende proces blokkeren, totdat de gegevens  (materieel)  naar
               de onderliggende hardware zijn geschreven.  Maar zie BEPERKINGEN
               onder
 
        O_NOFOLLOW
               {niet volgen} Als padnaam een symbolische koppeling is dan faalt
               de  open.   Symbolische koppelingen in eerdere delen van de pad‐
               naam worden nog steeds gevolgd.
 
               Dit is een FreeBSD uitbreiding, die aan Linux werd toegevoegd in
               versie  2.1.126.   De  ‘headers’  van  glibc  2.0.100  en  later
               definiëren deze vlag; kernel’s van  voor  2.1.126  negeren  deze
               vlag.
 
        O_DIRECTORY
               {directorie} Als padnaam geen directorie is dan faalt open. Deze
               vlag is eigen aan Linux, en werd  toegevoegd  in  kernel  versie
               2.1.126  om  deny-of-service {negeren van diensten} problemen te
               omzeilen als opendir(3) wordt aangeroepen op  een  FIFO  of  een
               tape-apparaat.  Deze vlag zou niet gebruikt moeten worden buiten
               het bouwen van opendir.
 
        O_LARGEFILE
               {groot bestand} Op 32-bit  systemen  die  grote  bestandsystemen
               {eng: LFS} ondersteunen, staat dit toe om bestanden met een lan‐
               gere lengte dan in 32-bits uitgedrukt kan worden, toch  te  ope‐
               nen.  De  Linux kernel ondersteund dit nu nog niet (nu 2.1.130),
               maar de vlaggen definities zijn present en  de  gebruikersruimte
               LFS-interfaces zijn aanwezig in de glibc 2.1 test uitgave.
 
        Sommige  van  deze  niet-verplichte vlaggen kunnen veranderd worden met
        fcntl nadat het bestand is geopend.
 
        mode Bepaald de toestemmingen die worden gebruikt als een bestand wordt
        gemaakt.  Dit  wordt  veranderd  door  het  umask {nl: gebruikers-stem‐
        pel/masker} van het proces op de gebruikelijke manier: de toestemmingen
        van het gemaakte bestand worden (mode & ~umask).
 
        In de volgende symbolische constanten is voorzien voor mode:
 
        S_IRWXU
               00700  gebruiker  (bestand  eigenaar)  heeft  lees,  schrijf  en
               uitvoer toestemming
 
        S_IRUSR (S_IREAD)
               00400 gebruiker heeft lees toestemming
 
        S_IWUSR (S_IWRITE)
               00200 gebruiker heeft schrijf toestemming
 
        S_IXUSR (S_IEXEC)
               00100 gebruiker heeft uitvoer toestemming
 
        S_IRWXG
               00070 groep heeft lees, schrijf en uitvoer toestemming
 
        S_IRGRP
               00040 groep heeft lees toestemming
 
        S_IWGRP
               00020 groep heeft schrijf toestemming
 
        S_IXGRP
               00010 groep heeft uitvoer toestemming
 
        S_IRWXO
               00007 anderen hebben lees, schrijf en uitvoer toestemming
 
        S_IROTH
               00004 anderen hebben lees toestemming
 
        S_IWOTH
               00002 anderen hebben schrijf toestemming
 
        S_IXOTH
               00001 anderen hebben uitvoer toestemming
 
        mode Moet altijd gegeven worden wanneer O_CREAT in de vlaggen, zit. Als
        O_CREAT niet in de vlaggen zit wordt mode genegeerd.
 
        creat()    Is    hetzelfde    als   open   met   vlaggen   gelijk   aan
        O_CREAT|O_WRONLF|O_TRUNC.
        open En creat geven de nieuwe bestandindicator terug, of -1 als er  een
        fout  was  (en welk geval errno naar behoren wordt gezet).  Merk op dat
        open apparaat speciale bestanden kan openen, maar  creat  kan  ze  niet
        maken - gebruik in plaats daarvan mknod(2).
 
        Op  NFS  bestand systemen waar UID ‘mapping’ {nl: in kaart brengen} aan
        staat, geeft open een bestandindicator terug,  maar  read(2)  aanvragen
        worden niet toegestaan, en falen met EACCES.  Dit is omdat de cliënt de
        open doet door de toestemmingen te controleren, maar het  UID  ‘mappen’
        wordt door de server gedaan bij lees en schrijf aanvragen.
 

FOUTEN

        EEXIST {bestaat}  padnaam  Bestaat  al  en  O_CREAT  en  O_EXCL  werden
               gebruikt.
 
        EISDIR {is directorie} padnaam Wijst naar een directorie en de  toegang
               tot het bestand betekende o.a.  schrijf-toegang.
 
        EACCES {toegang} De gevraagde toegang tot het bestand werd niet toeges‐
               taan, òf één  van  de  directories  in  padnaam  had  geen  zoek
               (uitvoer)  toestemming,  òf  het  bestand  bestond  nog  niet en
               schrijf toegang in de ouder-directorie werd niet toegestaan.
 
        ENAMETOOLONG
               {naam te lang} padnaam was te lang.
 
        ENOENT {geen ingang} Een directorie deel van padnaam bestaat niet of is
               een loshangende symbolische koppeling.
 
        ENOTDIR
               {geen  dir}  Een  deel  gebruikt als directorie in padnaam is in
               feite geen directorie, of O_DIRECTORY werd gebruikt maar padnaam
               was geen directorie.
 
        ENXIO  {geen  apparaat  of adres} O_NONBLOCK | O_WRONLY is gezet en het
               genoemde bestand is een FIFO maar er is geen proces dat de  FIFO
               open  heeft om te lezen, of het bestand is een apparaat speciaal
               bestand maar er is geen bijbehorend apparaat.
 
        ENODEV {geen apparaat} padnaam Wijst naar een apparaat speciaal bestand
               maar  er  is geen bijbehorend apparaat. (Dit is een Linux kernel
               bug - in deze situatie moet ENXIO worden teruggegeven.)
 
        EROFS  {alleen-lezen bestandsysteem} padnaam Wijst naar een bestand  op
               een   alleen-lezen   bestandsysteem   en  schrijf  toegang  werd
               gevraagd.
 
        ETXTBSY
               {text bezig} padnaam Wijst  naar  een  uitvoerbaar  bestand  dat
               momenteel wordt uitgevoerd en schrijf toegang werd gevraagd.
 
        EFAULT {fout} padnaam Wijst buiten door u toegankelijke adres ruimte.
 
        ELOOP  {cirkel}  Er  werden teveel symbolische koppelingen tegengekomen
               bij het oplossen van padnaam, of O_NOFOLLOW werd gebruikt,  maar
               padnaam was een symbolische koppeling.
 
        ENOSPC {geen  ruimte} padnaam Zou gemaakt worden, maar het apparaat dat
               padnaam zou gaan bevatten  heeft  geen  ruimte  voor  een  nieuw
               bestand.
 
        ENOMEM {geen geheugen} Onvoldoende kernel geheugen voorhanden.
 
        EMFILE {maximum  bestanden}  Het  proces  heeft  al het maximale aantal
               bestanden open.
 
        ENFILE {aantal bestanden} De grens aan het totale aantal open bestanden
               op het systeem is bereikt.
        SVr4, SVID, POSIX, X/OPEN, BSD 4.3
 

BEPERKINGEN

        Er  zijn vele ongelukkigheden in het protocol waar NFS op gebaseerd is,
        die onder anderen O_SYNC en O_NDELAY nadelig beïnvloeden.
 
        POSIX voorziet in drie verschillende soorten van onmiddellijke  In/Uit,
        die  bij  de O_SYNC, O_DSYNC en O_RSYNC horen. Momenteel (2.1.130) zijn
        deze allemaal gelijk onder Linux.
 

ZIE

        read(2) {lees}, write(2) {schrijf}, fcntl(2) {manipuleer bi},  close(2)
        {sluit,  link(2)  {verbind},  mknod(2)  {maak  node}, mount(2) {mount},
        stat(2) {staat}, umask(2) {gebruikers stempel}, unlink(2)  {maak  los},
        socket(2),{socket} fopen(3) {openen}, fifo(4) {eerst in, eerst uit}
 

VERTALING

        Dit  is  een  handleiding  uit  manpages-dev  1.34.   Alles  wat tussen
        ‘{’..‘}’ staat is aanvullende vertaling, en hoort niet bij de originele
        handleiding.  Email naar <manpages-nl@nl.linux.org>.
 
        $Id: open.2,v 1.2 2005/01/31 09:47:28 wouter Exp $