.\" Hey Emacs! This file is -*- nroff -*- source. .\" .\" This manpage is Copyright (C) 1992 Drew Eckhardt; .\" 1993 Michael Haardt, Ian Jackson. .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" .\" Modified Wed Jul 21 22:42:16 1993 by Rik Faith (faith@cs.unc.edu) .\" Modified Sun Aug 21 18:18:14 1994: Michael Haardt's NFS diffs were .\" applied by hand (faith@cs.unc.edu). .\" Modified Sat Apr 13 16:25:28 1996 by Andries Brouwer (aeb@cwi.nl) .\" Modified Mon May 13 00:53:52 1996: added symbolic constants .\" as sent by Thomas Koenig .\" Modified Fri Dec 20 16:06:45 1996 by Michael Haardt: More NFS details .\" Modified Fri Feb 19 15:08:34 1999 by Andries Brouwer (aeb@cwi.nl) .\" Modified 981128 by Joseph S. Myers .\" Modified Thu Jun 3 19:29:06 1999 by Michael Haardt: NFS lock optimisation .TH OPEN 2 "June 3, 1999" "Linux" "Systeem aanroepen" .SH NAAM open, creat \- openen (en mogelijk maken) van een bestand of apparaat .SH OVERZICHT .nf .B #include .B #include .B #include .sp .BI "int open(const char *" padnaam ", int " vlaggen ); .BI "int open(const char *" padnaam ", int " vlaggen ", mode_t " mode ); .BI "int creat(const char *" padnaam ", mode_t " mode ); .fi .SH BESCHRIJVING De .B 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 .BR 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 .BR fork (2) systeem aanroep.) Voor de nieuwe bestandindicator staat `aan' dat hij open blijft dóór .B exec* functies heen. (zie .BR fcntl (2)) De bestand-positie wordt naar het begin van het bestand gezet. .I vlaggen Kan .RB ` O_RONLY "', `" O_WRONLY "' of `" O_RDWR ' zijn, respectievelijk: open het bestand voor alleen-lezen, alleen-schrijven of lezen-én-schrijven. .I vlaggen Mag ook een bitsgewijze .B of zijn van één of meer van het volgende: .TP .B O_CREAT {maak} Als een bestand met dezelfde naam nog niet bestaat, dan wordt het gemaakt. .TP .B O_EXCL {uitsluiten} Wanneer gebruikt met .BR O_CREAT en als het bestand al bestaat is de aanroep fout en zal .B open() falen. .B 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 .BR link (2) om een koppeling te maken met het slotbestand. Als \fBlink()\fP 0 teruggeeft is het slot gelukt. Gebruik anders .BR 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. .TP .B O_NOCTTY {geen controlerende tty} Als .I padnaam naar een terminal apparaat wijst \(em zie .BR tty (4) \(em dan zal het niet de controlerende terminal van het proces worden, ook al heeft het proces geen controlerende terminal. .TP .B O_TRUNC {afhakken} Als het bestand al bestaat wordt het afgehakt (naar lengte nul). .TP .B O_APPEND {toevoegen} Het bestand is geopend in toevoegen-modus. Vóór elke .BR write() , wordt de positie in het bestand einde-van-bestand, alsof .BR lseek gebruikt was. .B 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. .TP .BR O_NONBLOCK " of " O_NDELAY {niet blokkeren} {geen vertraging} Het bestand wordt geopend in niet-blokkerende mode. .B 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 .BR fifo (4). .TP .B O_SYNC {gelijktijdig} Het bestand is geopend voor onmiddellijke In/Uit. Elke .B write() naar de opgeleverde bestandindicator zal het aanroepende proces blokkeren, totdat de gegevens (materieel) naar de onderliggende hardware zijn geschreven. .I Maar zie BEPERKINGEN onder .TP .B O_NOFOLLOW {niet volgen} Als \fIpadnaam\fR 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; \fIkernel's van voor 2.1.126 negeren deze vlag\fR. .TP .B O_DIRECTORY {directorie} Als \fIpadnaam\fR \fBgeen\fR 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 \fBopendir\fR(3) wordt aangeroepen op een FIFO of een tape-apparaat. Deze vlag zou niet gebruikt moeten worden buiten het bouwen van \fBopendir\fR. .TP .B 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. .PP Sommige van deze niet-verplichte vlaggen kunnen veranderd worden met .B fcntl nadat het bestand is geopend. .I mode Bepaald de toestemmingen die worden gebruikt als een bestand wordt gemaakt. Dit wordt veranderd door het .BR umask {nl: gebruikers-stempel/masker} van het proces op de gebruikelijke manier: de toestemmingen van het gemaakte bestand worden .BR "(mode & ~umask)" . .PP In de volgende symbolische constanten is voorzien voor .IR mode : .TP .B S_IRWXU 00700 gebruiker (bestand eigenaar) heeft lees, schrijf en uitvoer toestemming .TP .B S_IRUSR (S_IREAD) 00400 gebruiker heeft lees toestemming .TP .B S_IWUSR (S_IWRITE) 00200 gebruiker heeft schrijf toestemming .TP .B S_IXUSR (S_IEXEC) 00100 gebruiker heeft uitvoer toestemming .TP .B S_IRWXG 00070 groep heeft lees, schrijf en uitvoer toestemming .TP .B S_IRGRP 00040 groep heeft lees toestemming .TP .B S_IWGRP 00020 groep heeft schrijf toestemming .TP .B S_IXGRP 00010 groep heeft uitvoer toestemming .TP .B S_IRWXO 00007 anderen hebben lees, schrijf en uitvoer toestemming .TP .B S_IROTH 00004 anderen hebben lees toestemming .TP .B S_IWOTH 00002 anderen hebben schrijf toestemming .TP .B S_IXOTH 00001 anderen hebben uitvoer toestemming .PP .I mode Moet altijd gegeven worden wanneer .B O_CREAT in de .IR vlaggen , zit. Als O_CREAT niet in de vlaggen zit wordt .I mode genegeerd. .B creat() Is hetzelfde als .B open met .I vlaggen gelijk aan .BR O_CREAT|O_WRONLF|O_TRUNC . .SH "EIND WAARDE" .BR open " En " creat geven de nieuwe bestandindicator terug, of \-1 als er een fout was (en welk geval .I errno naar behoren wordt gezet). Merk op dat .B open apparaat speciale bestanden kan openen, maar .B creat kan ze niet maken - gebruik in plaats daarvan .BR mknod (2). .LP Op NFS bestand systemen waar UID `mapping' {nl: in kaart brengen} aan staat, geeft \fBopen\fP een bestandindicator terug, maar \fBread\fP(2) aanvragen worden niet toegestaan, en falen met \fBEACCES\fP. Dit is omdat de cliënt de \fBopen\fP doet door de toestemmingen te controleren, maar het UID `mappen' wordt door de server gedaan bij lees en schrijf aanvragen. .SH FOUTEN .TP .B EEXIST {bestaat} .I padnaam Bestaat al en .BR O_CREAT " en " O_EXCL werden gebruikt. .TP .B EISDIR {is directorie} .I padnaam Wijst naar een directorie en de toegang tot het bestand betekende o.a. schrijf-toegang. .TP .B EACCES {toegang} De gevraagde toegang tot het bestand werd niet toegestaan, òf één van de directories in .IR padnaam had geen zoek (uitvoer) toestemming, òf het bestand bestond nog niet en schrijf toegang in de ouder-directorie werd niet toegestaan. .TP .B ENAMETOOLONG {naam te lang} .IR padnaam " was te lang." .TP .B ENOENT {geen ingang} Een directorie deel van .I padnaam bestaat niet of is een loshangende symbolische koppeling. .TP .B ENOTDIR {geen dir} Een deel gebruikt als directorie in .I padnaam is in feite geen directorie, of \fBO_DIRECTORY\fR werd gebruikt maar .I padnaam was geen directorie. .TP .B 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. .TP .B ENODEV {geen apparaat} .I 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.) .TP .B EROFS {alleen-lezen bestandsysteem} .I padnaam Wijst naar een bestand op een alleen-lezen bestandsysteem en schrijf toegang werd gevraagd. .TP .B ETXTBSY {text bezig} .I padnaam Wijst naar een uitvoerbaar bestand dat momenteel wordt uitgevoerd en schrijf toegang werd gevraagd. .TP .B EFAULT {fout} .IR padnaam " Wijst buiten door u toegankelijke adres ruimte." .TP .B ELOOP {cirkel} Er werden teveel symbolische koppelingen tegengekomen bij het oplossen van .IR padnaam , of \fBO_NOFOLLOW\fR werd gebruikt, maar .I padnaam was een symbolische koppeling. .TP .B ENOSPC {geen ruimte} .I padnaam Zou gemaakt worden, maar het apparaat dat .I padnaam zou gaan bevatten heeft geen ruimte voor een nieuw bestand. .TP .B ENOMEM {geen geheugen} Onvoldoende kernel geheugen voorhanden. .TP .B EMFILE {maximum bestanden} Het proces heeft al het maximale aantal bestanden open. .TP .B ENFILE {aantal bestanden} De grens aan het totale aantal open bestanden op het systeem is bereikt. .SH "VOLDOET AAN" SVr4, SVID, POSIX, X/OPEN, BSD 4.3 .SH BEPERKINGEN Er zijn vele ongelukkigheden in het protocol waar NFS op gebaseerd is, die onder anderen .BR O_SYNC " en " O_NDELAY nadelig beïnvloeden. POSIX voorziet in drie verschillende soorten van onmiddellijke In/Uit, die bij de \fBO_SYNC\fR, \fBO_DSYNC\fR en \fBO_RSYNC\fR horen. Momenteel (2.1.130) zijn deze allemaal gelijk onder Linux. .SH "ZIE" .BR read "(2) {lees}," .BR write "(2) {schrijf}," .BR fcntl "(2) {manipuleer bi}," .BR close "(2) {sluit," .BR link "(2) {verbind}," .BR mknod "(2) {maak node}," .BR mount "(2) {mount}," .BR stat "(2) {staat}," .BR umask "(2) {gebruikers stempel}," .BR unlink "(2) {maak los}," .BR socket "(2),{socket}" .BR fopen "(3) {openen}," .BR fifo "(4) {eerst in, eerst uit}" .\" Translated to Dutch Mon Nov 6 2000 by Jos Boersema .\" .SH VERTALING Dit is een handleiding uit \fBmanpages-dev 1.34\fR. Alles wat tussen `\fB{\fR'..`\fB}\fR' staat is \fBaanvullende vertaling\fR, en hoort \fBniet\fR bij de originele handleiding. .\" .\"Vertaling Jos Boersema .\" Email naar . $Id: open.2,v 1.1 2003/04/28 18:43:34 bokkie Exp $