Synopsis
#include << A HREF = "Datei: /usr/include/sys/types.h"> sys / types.h> #include << A HREF = "Datei: /usr/include/sys/stat.h"> System / stat.h> #include << A HREF = "Datei: /usr/include/fcntl.h"> fcntl.h> int opgemaacht (const char * pathname , int flags ); int open (const char * pathname , int flags , mode_t mode ); int creat (const char * pathname , mode_t mode );Beschreiwung
Den open () System Call Call linux gëtt benotzt fir e Wee an en Dateipesterorientéierung ze konvertéieren (eng kleng, net negativ Ganzzeechen fir de Gebrauch an der spéider I / O wéi mat Lies , Schreif etc.) ze benotzen. Wann de Ruff erfollegräich ass, gëtt de Datei- Descriptor zréckgezunn wann et de niddereg Dateie-Deskriptor gëtt deen net aktuell ass fir de Prozess. Dëse Ruf schafft eng nei oppen Datei, déi net mat engem anere Prozedur gedeelt gëtt. (Awer gedeelte geheescht Dateien ginn iwwer den Gabel (2) Systemufro kënnt.) Den neien Date Deskriptor ass festgeluegt ginn fir op Executiv Funktiounen ze bleiwen (kuckt fcntl (2)). De Fichier gëtt op den Ufank vun der Datei gesat.
D'Parameterfändel ass eng vun O_RDONLY , O_WRONLY oder O_RDWR, déi Ufro erof liesen, nëmmen ze schreiwen oder ze schreiwen oder ze liesen / ze schreiwen, deelweis mat der Null oder méi vun der folgender Lëscht:
O_CREAT
Wann d'Datei net existéiert, wäert et geschafen ginn. Den Besëtzer (Benotzer ID) vun der Datei gëtt fir d'effektiv Benotzerkennung vum Prozess festgeluegt. D'Gruppereigenschaft (Gruppidentifikatioun) ass entweder op d'effektive Grupp ID vum Prozess oder op d'Grupp ID vum Materieverwaltung festgeluecht (ofhängeg vun Dateisystemtyp a Mount Mountoptiounen, an de Modus vum Mutterverzeichnis, kuckt zB d'Mount Optiounen bsdgroups an sysvgroups vum ext2-Dateisystem, sou wéi an der Mount (8)).
O_EXCL
Wann Dir O_CREAT benotzt , falls de Fichier schonn existéiert, ass et e Fehler an de Public ass falsch. An dësem Kontext existéiert e symboleschen Link, egal wéi seng Punkte sinn. O_EXCL ass op NFS Dateisysteme gebroot, Programmer déi drop opgespillt ginn fir Sperren z'ënnerstëtzen. D'Léisung fir eng atomesch Datei ze sperren mat engem Lockfile ass eng eegene Fichier op derselwechter FS (z. B. den Hostname an den Pid) ze erstellen, Link (2) benotze fir e Link op de Lockfile ze maachen. Wann de Link () ( 0 ) 0 gëtt, ass d'Sperrung erfollegräich. Andeems Dir stat (2) op der eenzegaarteger Datei benotzt, fir ze kontrolléieren ob säi Link zielt op 2 erop, woubäi och de Schloss och erfollegräich ass.
O_NOCTTY
Wann de Wéngegehalt op e terminal Terminal verweist --- kuckt tty (4) --- et gëtt net de Kontrollkontrollprozess am Prozess, och wann de Prozess net een huet.
O_TRUNC
Wann de Fichier schonn existéiert an ass e regelméissege Fichier an de Open Mode kann schreiwen (dh O_RDWR oder O_WRONLY) gëtt et ofgeschnidden. 0 Wann d'Datei eng FIFO oder Terminal-Datei ass, gëtt d'O_TRUNC-Flagge ignoréiert. Sinn den Effet vum O_TRUNC net spezifizéiert. (Op vill Linux Versiounen gëtt et ignoréiert; an aner Versiounen gëtt et e Fehler.)
O_APPEND
De Fichier gëtt am Anhang uginn. Virun all Schreifweis gëtt de Fichierzeiger um Enn vum Fichier positionéiert, als ob mat lseek . O_APPEND kann zu beschiedegt Fichieren op NFS Dateisystemer féieren wann méi wéi ee Prozess hëlt Daten an e Fichier un. Dëst ass wéinst der NFS net ënnerstëtzt andeems se e Fichier anhëlt, sou datt de Client Kernel et simuléieren, wat net ouni Rennen Zoustänn kann maachen.
O_NONBLOCK oder O_NDELAY
Wa méiglech, gëtt d'Datei an net blockéiertem Modus geännert. Weder déi oppen an déi nächst Operatiounen op de Datei-Deskriptor, deen zréckkënnt, verursaachen den Appell fir ze warten. Fir den Ëmgank vu FIFOs (genannt Päifen) kuckt och fifo (4). Dëse Modus braucht keen Effekt op aner Dateien wéi FIFOs.
O_SYNC
De Fichier gëtt op synchronous E / A geöffnet. All Schreifend op den entsteckten Dateibeschreiwung blockéiert de Ruffprozess ze blockéieren bis d'Daten physesch an déi zugeleechnesch Hardware geschriwwe ginn. Kuckt d'RESTRIKTIONEN ënnen.
O_NOFOLLOW
Wann de Wee net e symbolesche Link ass, da fänkt net op. Dëst ass eng Extrait vun der FreeBSD, déi am Linux 2.1 an der Versioun vum Linux hinzugefügt gouf. Symbolesch Links zu fräie Komponente vum Wee sinn ëmmer nach gefollegt. D'Header aus glibc 2.0.100 a spéider gehéiert eng Definitioun vun dësem Fändel; Kneelen virun 2.1.126 ignoréieren et wann et gebraucht gëtt .
O_DIRECTORY
Wann de Wee net e Verzeichnis ass, verursachen déi oppene Feeler. Dëse Fändel ass Linux-spezifesch an ass an der Kernel Versioun 2.1.126 hinzegeleedegt, fir Missbrauch vu Serviceprobleme zu vermeiden, wann opendir (3) op engem FIFO- oder Baskemaster genannt gëtt, awer net benotzt ginn ausserhalb vun der Ëmsetzung vu opendir .
O_DIRECT
Versicht e Cache Effekter vun der I / O op a vun der Datei ze minimiséieren. Am allgemengen doduerch gëtt d'Performance verbessert, awer et ass nëtzlech an speziellen Situatiounen, wéi wann d'Applikatiounen hir eege Cache maachen. Datei I / O gëtt direkt u / vu Benotzerraumpuffer geschitt. D'I / O ass synchron, dh bei der Vervollständegung vum Lies (2) oder Schreiwe (2) Systemrufnummer, garantéiert dat Daten. Umeldungssegmenter, an d'Ausrichtung vum Benotzerpuffer a Dateieoffset muss all Molekülle vun der logescher Blockgréisst vum Dateisystem sinn.
Dëse Fändel gëtt mat enger Unix-ähnlecher System ënnerstëtzt; Ënnerstëtzung ass ënner Linux an der Kernel Versioun 2.4.10 hinzukommen.
Eng semantesch ähnlech Interface fir Blockgeräter gëtt a roude (8) beschriwwen.
O_ASYNC
Gitt e Signal (SIGIO par default, awer dat kann iwwer fcntl geännert ginn) wann d'Input oder Output op dësem Dateipesteror onméiglech ass . Dës Fonktioun ass nëmme fir Klemmmeeler, Pseudo-Klempen a Sockel. Kuckt d ' FCntl (2) fir méi Detailer.
O_LARGEFILE
Op 32-Bit Systeme déi den Large Files System ënnerstëtzen, erlaaben Dateien, wou d'Gréide kënnen net an 31 Bits opgedeckt ginn.
E puer vun dësen optionalen Markéierter kënnen iwwer fcntl geännert ginn nodeems d'Datei opgemaach gouf.
De Argumentmodus spezifizéiert d'Permissiounen fir ze benotzen wann eng nei Datei schafft. Et gëtt geännert duerch de Prozess vun der Prozess um normale Wee: d'Rechter vun der erstallte Datei sinn (Modus & ~ Umask) . Bedenkt datt dëse Modus nëmmen fir zukënfteg Zougäng op déi nei erstallt Datei; den oppene Link, deen e Lieszeechen erstellt, kënnt och e Lies- / Schreifdate des Deskriptor zréck.
Déi folgend symbolesch Konstanten si fir de Modus virgesinn:
S_IRWXU
00700 Benotzer (Datei Besitzer) huet Liesen, Schreift a fuerderen Erlaabnes
S_IRUSR (S_IREAD)
00400 Benotzer huet Lieserléisung
S_IWUSR (S_IWRITE)
00200 Benotzer huet Schreiwe d'Autorisatioun
S_IXUSR (S_IEXEC)
00100 Benotzer huet ausbezuelen
S_IRWXG
00070 Grupp huet eppes gelies, schreift an auszeüben
S_IRGRP
00040 Grupp huet Léisung geliwwert
S_IWGRP
00020 Grupp huet schreiwe Rechter
S_IXGRP
Grupp 00010 huet ausdrécklech Erlaabnes
S_IRWXO
00007 aner hunn Liesen, Schreiwen an ausbezuelen
S_IROTH
00004 aner hunn d'Autorisatioun geliwwert
S_IWOTH
00002 Aner hunn schreiwe Permissatioun
S_IXOTH
00001 aner hunn d'Autorisatioun ausginn
Modus muss spezifizéiert ginn wann O_CREAT an de Fändelen ass a gëtt soss näischt ignoréiert.
Creat ass equivalent fir oppen mat Fändelen gleich mat O_CREAT | O_WRONLY | O_TRUNC .
RETURN VALUE
Open an Creat ass de neie Datei-Descriptor zréck oder -1, wann e Feeler ofgeschloss ass (an deem Fall ass errno eegestänneg). Note datt oppen kann op spezielle Fichieren Dateien öffnen, mee Kreat kënnen se net erstellen - benotzt mknod (2) statt.
NFS Dateisysteme mat UID-Mapping aktivéiert, kann opgemaale Datei-Descriptor zréckgoen, awer zë Readen (2) Ufroen ginn mat EACCES verweigert . Dëst ass wéinst dem Prêt vum Client klickt , wann d'Permissiounen iwwerpréift ginn, awer UID-Mapping gëtt vun dem Server beim Lies- a Schreif-Ufro gemaach.
Wann d'Datei eréischt kreéiert gëtt, ginn d'Atime, ctime, mtime Felder op déi aktuell Zäit festgeluegt an sou ass d'ctime an mtime Felder vum Mutterverzeichnis. Sinn, wann d'Datei geännert gëtt wéinst dem O_TRUNC-Flag, gëtt seng ctime- a mtime Felder op déi aktuell Zäit gesat.
Feeler
EEXIST
Pfadname gëtt already existéiert an O_CREAT an O_EXCL goufen benotzt.
EISDIR
Weewege bezitt op e Verzeichnis an de Zougrëff oblieft eng schrëftweis (dh O_WRONLY oder O_RDWR ass festgeluegt).
EACCES
De gefrote Zougank zum Fichier ass net erlaabt oder eent vun de Verknüpfungen am Päischthënn net erméiglecht d'Sich (Ausféierung) Erlaabnes, oder d'Fichier ass net fonnt ginn an den Zougang zum Materialliwwel z'erreechen ass net erlaabt.
ENAMETOOLONG
Wee ass ze laang.
ENOENT
O_CREAT ass net festgeluecht an déi genannte Datei existéiert net. Oder eng Verknüpfung vu Verknüpfungen am Päischt ass net existéiert oder ass en zerbrach symbolesch Link.
ENOTDIR
E Component deen als Verzeichnis als Virnumm benotzt gëtt, ass net tatsächlech e Verzeichnis oder O_DIRECTORY uginn an de Wee ass net e Verzeichnis.
ENXIO
O_NONBLOCK | O_WRONLY gëtt gespaart, déi benannt Datei ass e FIFO a kee Prozess huet d'Datei op d'Liese geännert. Oder ass de Fichier e spezielle Fichier vun engem Apparat a kee korrespondéierte Gerät existéiert.
ENODEV
Weewege bezitt op e spezielle Fichier vun engem Apparat a kee korrespondéierte Gerät existéiert. (Dëst ass e Linux Kernel Bug - an dëser Situatioun muss ENXIO zréckkommen.)
EROFS
Weewege bezielt op eng Datei op e Lieseit-Dateiformat a schreift Zougang war gefrot.
ETXTBSY
Weewege bezielt op eng ausführbar Biller, déi am Moment ausgefouert gëtt a Schreifzugriff gebraucht.
EFAULT
Weeërspunkten ausserhalb Är accessibel Adressraum.
ELOOP
Zu sou vill symbolesch Linke goufe bei der Léisung vum Wee , oder O_NOFOLLOW gouf uginn, awer de Wee ass e symboleschen Link.
ENOSPC
De Wee gouf geschaf ginn, awer de Geriichtshaff, deen Pathname enthält , keng Plaz fir déi nei Datei.
ENOMEM
Net genuch Käerz Erënnerung war verfügbar.
EMFILE
De Prozess huet schon déi maximal Zuel vu Dateien opgemaach.
ENFILE
D'Limitatioun vun der totaler Zuel vu Dateien op de System opgemaach ginn ass erreecht ginn.
Conforming to
SVr4, SVID, POSIX, X / OPEN, BSD 4.3 D' O_NOFOLLOW an O_DIRECTORY Flags sinn Linux- spezifesch. Dir musst de _GNU_SOURCE Makro fir hir Definitioune ze definéieren.
Restriktiounen
Et sinn vill Onendlechkeeten am Protokoll, deen de NFS ënnersträicht, deen ënnert anerem O_SYNC a O_NDELAY beaflosst .
POSIX léisst dräi verschidden Varianten vun synchroniséierte I / O, entspriechend den Flags O_SYNC , O_DSYNC an O_RSYNC . Momentan (2.1.130) dës sinn alle ënner Linux.