Provided by: manpages-nl_20051127-1_all bug

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.).
       Wanneer 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-
       schrijven.

       vlaggen Mag ook een bitsgewijze  of  zijn  van  één  of  meer  van  het
       volgende:

       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
              controlerende 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
              operaties op de bestandindicator die teruggegeven wordt,  zullen
              het  proces  niet  blokkeren. Voor hoe FIFO’s (pijpen met namen)
              behandeld worden, zie ook fifo(4).

       O_SYNC {gelijktijdig} Het bestand is geopend voor onmiddellijke In/Uit.
              Elke  write()  naar  de  opgeleverde  bestandindicator  zal  het
              aanroepende 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
              padnaam 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; kernels 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
              langere lengte dan in 32-bits uitgedrukt  kan  worden,  toch  te
              openen.  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-
       stempel/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.

EIND WAARDE

       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
              toegestaan,  ò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.

VOLDOET AAN

       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 $