Baro Command Open Open

Muujinta

#include << HREF = "faylka: /usr/include/sys/types.h"> sys / types.h> #include << HREF = "faylka: /usr/include/sys/stat.h"> sys / stat.h> #inaad < HREF = "faylka: /usr/include/fcntl.h"> fcntl.h> fur furan (const char * qaansheegad , calaamado isku mid ah ); furan (const char * qaansheegad , calamadaha int , mode_t mode ); xayeysiinta (const char * xarafka, habka mode_t );

Sharaxaad

Nidaamka furan () ee nidaamka linux wuxuu u adeegsanayaa inuu u bedelo habka loo yaqaan 'pathname' (tusaaleyaal yar, aan ahayn mid aan wanaagsaneyn oo loo adeegsanayo I / O kaddib marka la akhriyo , qoro , iwm.). Marka wicitaanku uu guuleysto, tifaftiraha faylka ku soo celiyay waa inuu ahaadaa sharraxa faylka ugu hooseeya oo aan hadda u furmin geeddi-socodka. Wicitaanku wuxuu abuuraa fayl cusub oo furan, oo aan la wadaagin habab kale. (Laakiin faylasha furan ee la wadaago ayaa laga yaabaa inay soo baxaan iyadoo loo marayo fariinta nidaamka fargeetada (2). Faylka cusub ee faylka ayaa lagu qeexayaa inuu furan yahay dhammaan hawlaha exec (eeg fcntl (2)). Fadlan faylka ayaa la dhigaa bilawga feylka.

Calanka calaamadaha ah waa mid ka mid ah O_RDONLY , O_WRONLY ama O_RDWR oo codsanaya furitaanka faylka akhriska-kaliya, qorista-keliya ama akhriska / qoraalka, siday u kala horreeyaan, dhidibada- ama "e" leh eber ama ka badan kuwa soo socda:

O_CREAT

Haddii feylku aanu jirin, waxaa la abuuri doonaa. Milkiilaha (user ID) ee faylka ayaa lagu qeexay aqoonsiga isticmaale ee habboon ee geeddi-socodka. Aqoonsiga kooxda (aqoonsi kooxeed) ayaa loo qoondeeyey aqoonsi kooxeed ee waxqabadka ama aqoonsiga kooxda ee diiwaanka waalidka (iyadoo ku xiran nooca filesystem iyo fursadaha taallo, iyo habka diiwaanka waalidka, arag, tusaale ahaan, buurta xulashada bsdgroups iyo sysvgroups ee faylalka ext2, sida lagu sharaxay buurtii (8)).

O_EXCL

Marka la isticmaalo O_CREAT , haddii feyl horey u jirey waa qalad waana la furan doonaa. Xaaladdan oo kale, isku xirnaan calaamad ayaa jirta, iyada oo aan loo eegin meelaha ay ku tilmaameyso. O_EXCL waa la jabiyay nidaamka faylasha NFS , barnaamijyada ku tiirsan qabashada howlaha xajinta waxay ku jiri doonaan xaalad jinsi. Xalka si loo isticmaalo faylka faylka atomiga iyadoo la adeegsanayo xirmo xirmo waa inuu abuuro faylal gaar ah oo ku saabsan fs isku mid ah (tusaale ahaan, isku- xirka magaca aqalka iyo pid), isticmaal xarig (2) si aad u xirto xarigga kumbuyuutarka. Haddii link () ay noqoto 0, qufulku waa uu guuleystey. Haddii kale, isticmaal stat (2) faylka u gaarka ah si loo hubiyo in tirakoobka xariggu uu kordhay 2, kiiskuna wuxuu sidoo kale ku guuleystey.

O_NOCTTY

Haddii pathname uu yahay aaladda qalabka dayactirka --- fiiri tty (4) --- ma noqon doonto gorgortanka nidaamka xitaa haddii habka uusan haysan mid.

O_TRUNC

Haddii faylka horey u jirey oo uu yahay fayl joogto ah iyo qaabka furan wuxuu u oggolaanayaa qorista (ie, O_RDWR ama O_WRONLY) waxaa loo gooyaa dhererka 0. Haddii faylka uu yahay faylka FIFO ama faylka qalabka terminal, calanka O_TRUNC waa la iska indhatiray. Haddii kale, saamaynta O_TRUNC waa wax aan la sheegin. (Qaybo badan oo Linux ah waa la iska indhatiri doonaa, iyada oo qoraalkale kale, waxay ku noqon doontaa qalad.)

O_APPEND

Faylka waxaa lagu furay qaabka dib loo dhigo. Ka hor inta aan la qorin , calaamadda faylka ayaa la dhigayaa dhammaadka faylka, sida laxiriira . O_APPEND waxay u horseedi kartaa feylaacyo fara badan oo ku saabsan nidaamka faylasha NFS haddii wax ka badan hal nidaam xogta faylasha la mariyo. Tani waa sababta oo ah NFS ma taageerto codsigii faylka, sidaas darteed xuddunta macaamiisha waa in ay jilaan, taas oo aan la sameyn karin iyadoon jirin xaalad jinsi.

O_NONBLOCK ama O_NDELAY

Markay suurtagal tahay, faylka waxaa loo furay qaab aan xannibnayn. Meelaha furan ama howlaha ku xiga ee qeexida faylka oo la soo celinaayo waxay keenaysaa habka wicitaanada in ay sugaan. Wixii maareynta FIFOs (dhuumaha la magacaabay), sidoo kale fiiri bogga (4). Habkani uma baahna wax saameyn ah ku yeelan faylasha aan ka ahayn FIFOs.

O_SYNC

Faylka waxaa loo furay si isku dhafan I / O. Wax kasta oo qoraal ah oo ku saabsan sharaxaadda faylka keenaya ayaa xakameyn doona hannaanka wicitaanada illaa iyo inta xogta loo adeegsan lahaa qalabka hoosta ku yaal. Eeg xuduudaha hoos ku xusan, inkastoo.

O_NOFOLLOW

Haddii wadadii cinwaanka ay tahay mid calaamad u ah, ka dibna furfurnaantu way guul darreysaa. Kani waa kordhinta FreeBSD, kaas oo lagu daray Linux oo ah version 2.1.126. Xidhiidhada muuqaalka ee qaybaha hore ee waddada wali waa la raacayaa. Madaxda ka imanaya glibc 2.0.100 iyo ka dib waxaa ka mid ah qeexitaanka calankaan; Kernels ka hor 2.1.126 ayaa iska indhatiraya haddii loo isticmaalo .

O_DIRECTORY

Haddii pathname uusan ahayn buugga, u sabab u noqo inuu ku guuldareysto. Calankani waa Linux oo gaar ah, waxaana lagu daraa nuqulka version 2.1.126, si looga fogaado dhibaatooyinka adeegga haddii opendir (3) loo yaqaan 'FIFO ama qalabka wax lagu duubo', laakiin aan loo isticmaalin meel ka baxsan hirgelinta Opendir .

O_DIRECT

Isku day inaad yarayso saameynta cachurka ee I / O ga iyo ka faylkan. Guud ahaan tani waxay hoos u dhigi doontaa waxqabad, laakiin waxay faa'iido u leedahay xaaladaha gaarka ah, sida marka codsiyada ay sameeyaan qaddiyadooda. Faylka I / O waxaa si toos ah loogu sameeyaa / laga soo qaadayaa meelaha laga isticmaalo. I / O waa isbarbardhig, ie, marka la dhamaystiro akhrinta (2) ama qoraalka (2) call nidaamka, xogta waxaa loo ballan qaaday in loo wareejiyay. Xajmiga wareejinta, iyo isku xirnaanta buug-isticmaalka iyo bakhti-gelinta faylka waa in dhammaantood la dhimo tirada cabbirka caqli-galka ee nidaamka faylka.
Calankan waxaa lagu taageerayaa dhowr nidaamyo unix-la mid ah; Taageerada ayaa lagu daray Linux ka dibna waxa ku jira version 2.4.4.
Qalab isku mid ah oo isku mid ah oo loogu talagalay qalabyada qalabka ayaa lagu qeexay qashin (8).

O_ASYNC

Abuurso calaamad (SIGIO default default, laakiin tani waxaa lagu badali karaa fcntl (2)) marka feylka ama soo baxa uu suurtagal noqon karo sharaxa faylka. Muuqaalkani wuxuu diyaar u yahay oo keliya kumbiyuutarrada, kumbuyuutarrada, iyo saldhigyada. Eeg fcntl (2) faahfaahin dheeraad ah.

O_LARGEFILE

Qalabka 32-bit oo taageera nidaamka Diiwaannada Large, u oggolow faylasha kuwaas oo tiradooda aan ka muuqan karin 31 bits in la furo.

Qaar ka mid ah calaamadahan ikhtiyaari ah ayaa lagu bedeli karaa iyadoo la isticmaalayo fcntl ka dib markii faylka la furay.

Xaaladda doodda waxay qeexeysaa ogolaanshaha isticmaalka haddii kiis cusub la abuuro. Waxaa wax laga beddelayaa habka loo yaqaan ' umas ' sida habka caadiga ah: ogolaanshaha faylka la abuuray waa (hab & umask) . Ogsoonow in qaabkani uu khuseeyo kaliya gelitaanka faylalka cusub ee la abuuray; Wicitaanka furan oo abuuraya faylka akhriska keliya ayaa si fiican u soo celin kara sharxaha faylka / qoraalka.

Sababaha xasuusta ah ee soo socda ayaa la siiyaa qaab :

S_IRWXU

00700 user (milkiilaha feyl) wuxuu akhriyay, qoraa oo fuliyaa fasax

S_IRUSR (S_IREAD)

00400 qof ayaa akhriyay ogolaansho

S_IWUSR (S_IWRITE)

00200 user ayaa qora ogolaansho

S_IXUSR (S_IEXEC)

00100 user ayaa fuliyay ogolaansho

S_IRWXG

00070 koox ayaa akhriyay, qora oo fuliya fasax

S_IRGRP

00040 koox ayaa aqrisay fasax

S_IWGRP

00020 kooxdu waxay haysataa fasax qoraal ah

S_IXGRP

00010 koox ayaa fulisay fasax

S_IRWXO

00007 dad kale ayaa akhriyay, qora oo fuliya fasax

S_IROTH

00004 dad kale ayaa fasax akhriyay

S_IWOTH

00002 kuwa kale waxay leeyihiin ruqsad qoraal ah

S_IXOTH

00001 kuwa kale waxay leeyihiin oggolaansho

Habka waa in lagu caddeeyaa marka O_CREAT ay ku jirto calanka , waana la iska indha-tirayaa.

Abuurtu waxay u dhigantaa in la furo calamo la mid ah O_CREAT | O_WRONLY | O_TRUNC .

KALA DUWAN TAHAY

furan oo abuuraya soo celi sharraxaha faylka cusub, ama -1 haddii qalad dhaco (xaaladaas, errno si habboon loo dejiyey). Ogsoonow in furan ay furi karto faylasha gaarka ah ee qalabka, laakiin abuur ma abuuri karaan iyaga - isticmaal mknod (2) halkii.

NFS nidaamka faylasha oo la moodi karo mashiinnada UID, furan ayaa soo celin karta sharraxa faylka, laakiin sida codsiyada (2) codsiyada ayaa loo diiday EACCES . Tani waa sababta oo ah macmiilku wuxuu furan yahay isagoo hubinaya ruqsadaha, laakiin khariidadda UID waxaa sameeya server-yada marka codsiyada akhriska iyo qorista.

Haddii faylka cusub la abuuro, xagiisa, saacadaha, mooska wakhti go'an ayaa la dhigaa wakhtigan xaadirka ah, sidoo kale waa wakhti firaaqo iyo mawduucyada diiwaanka waalidka. Haddii kale, haddii faylka la bedelay sababtoo ah calanka O_TRUNC, xilliga firaaqada iyo xilliyada mooska ayaa la dhigay waqtigan.

Khaladaad

EEXIST

wadiiqadii horay u jirey iyo O_CREAT iyo O_EXCL ayaa loo isticmaalay.

EISDIR

Magaca qaan sheegashadu wuxuu loola jeedaa tusaha iyo helitaanka codsiga ku lug leh qoraalka (taasi waa, O_WRONLY ama O_RDWR ayaa la dhigay).

EACCES

Codsiyada la codsaday ee faylka lama oggola, ama mid ka mid ah buug - tilmaameedka pathname ma uusan u oggolaan in uu raadiyo (fuliyo) oggolaansho, ama faylka weli lama haynin oo qori karo helitaanka diiwaanka waalidka lama oggola.

ENAMETOOLONG

magaca waddada aad ayuu u dheeraa.

MAGAALADA

O_CREAT lama dejin, feylkaasna lama hayo. Ama, qayb ka mid ah qaybta jaantuska ma jiro ama waa calaamad muuqata.

DHISMAHA

Qayb ka mid ah buugga loo adeegsanayo buug yareh waa kuma, dhab ahaantii, buugga, ama O_DIRECTORY ayaa la cayimay iyo pathname ma ahayn liis.

ENXIO

O_NONBLOCK | O_WRONLY waa la dejiyay, faylka la magacaabey waa FIFO iyo habsocodsi ma laha faylka u furan akhrinta. Ama, faylka waa fayl gureed qalab gaar ah iyo qalab lagama maarmaan ah.

ENODEV

nambarka magiciisu wuxuu loola jeedaa faylka gaarka ah ee qalabka iyo ma jirto qalab u dhiganta. (Tani waa qalad keli ah oo Linux ah - xaaladdan ENXIO waa in la soo celiyaa.)

EROFS

pathname waxaa loola jeedaa faylka ku yaala faylalka keliya ee akhriska iyo qorista gelitaanka ayaa la codsaday.

ETXTBSY

Magaca xawaaraha wuxuu loola jeedaa sawir la fulin karo kaas oo hadda la fulinayo oo la qorey.

EFAULT

dhibcaha wadada ka baxsan banaanka cinwaankaaga.

ELOOP

Xidhiidh badan oo calaamado badan ayaa lagu arkay xalinta waddooyinka , ama O_NOFOLLOW ayaa la cayimay, laakiin dariiqa waa magac calaamad ah.

ENOSPC

magaca pathname waa in la abuuraa laakiin qalabka uu ku jiro pathname ma laha boos feyl cusub.

ENOMEM

Xusuusin xambaarsan yahay ayaa la heli karaa.

EMFILE

Hannaanku wuxuu horey u haystaa tirada ugu badan ee faylasha furan.

GANAAXYADA

Xaddiga tirada guud ee faylasha furan ee nidaamka ayaa la gaarey.

Isku waafaqsanaanta

SVR4, SVID, POSIX, X / OPEN, BSD 4.3 O_NOFOLLOW iyo calamadaha O_DIRORORY waa Linux -specific. Mid waxaa laga yaabaa inay tahay in la qeexo macnaha _GNU_SOURCE macro si ay u helaan qeexitaankooda.

Xaddidaadda

Waxaa jira khasaare badan oo ka jira nidaamka hoos yimaada NFS, oo saameeya kuwa kale O_SYNC iyo O_NDELAY .

POSIX waxay bixisaa saddex nooc oo kala duwan oo ah iskudhafka I / O, oo u dhiganta calanka O_SYNC , O_DSYNC iyo O_RSYNC . Xilligan (2.1.130) kuwan oo dhan waa kuwo ku siman Linux.