Isiqendu
#qulude << A HREF = "ifayile: /usr/include/sys/types.h"> sys / types.h> # kuquka "A HREF =" ifayile: /usr/include/sys/stat.h>> sys / stathh> # kuquka "A HREF =" ifayile: /usr/include/fcntl.h "> fcntl.h> int evulekileyo (intrakthi yendlela , iiflegs ); evulekileyo ( intsimbi yendlela ) , iiflegi zangaphakathi, imodeli ye- mode_t ); int creat (i-const char * umendo , indlela yemodi_t );Inkcazo
Umyalelo ovulekile () wenkqubo ye-call linux isetyenzisiweyo ukuguqula igama lomzila kwi-descriptor yefayili (encinci, engenanto engenziyo ekusebenziseni i-I / O elandelayo njengokufunda, ukubhala , njl.). Xa ifowuni iphumelele, i-descriptor yefayile ibuyele kwakhona ibe yinkcazelo yezantsi yefayile engabonwanga ngenkqubo. Olu fowuni ludala ifayile entsha evulekileyo, engabelwanga nayo nayiphi na inkqubo. (Kodwa ikwabelwana iifayile ezivulekileyo zingaphuma ngefowuni (2) umnxeba wenkqubo.) I-descriptor entsha yefayile isetyenziselwe ukuhlala ivulekile kwimisebenzi yokusebenza (jonga i- fcntl (2)). I-offset yefayile isetyenziswe ekuqaleni kwefayili.
Iifayile zepalitha enye ye- O_RDONLY , i- O_WRONLY okanye i- O_RDWR ecela ukuvula iifayile ezifundwayo kuphela, ukubhala kuphela-okanye ukufunda / ukubhala ngokulandelanayo, ngokukodwa okanye nge-zero okanye okunye oku kulandelayo:
O_CREAT
Ukuba ifayile ayikho iya kudala. Umnini (i-ID yomsebenzisi) yefayili isetyenziswe kwi-ID yomsebenzisi esebenzayo kwinkqubo. Ubunikazi beqela (i-ID ye-ID) isetyenzisiweyo kwi-ID yeqela elisebenzayo kwinkqubo okanye kwi-ID ye-ID yomrekhoda womzali (kuxhomekeke kwindlela yohlobo lweefayile kunye nokukhethwa kwendlela, kunye nemodi yomqondiso womzali, yabona, umz. iindlela ze- bsdgroups kunye ne- sysgroups yesistimu yefayile ye-ext2, njengoko ichazwe kwintaba (8)).
O_EXCL
Xa isetyenziswe nge- O_CREAT , ukuba ifayile sele ikhona iphutha kwaye ivulekile iya kuphumelela. Kulo mongo, isiqhelo esingokomqondiso sikhona, kungakhathaliseki ukuba iindawo zayo ziphi. I-O_EXCL iphulwe kwiinkqubo zefayile ze-NFS , iinkqubo ezithembele kuyo ukwenza imisebenzi yokuvala izakuquka imeko yomqhumo . Isisombululo sokwenza ifowuni yokukhiya i-atomic usebenzisa i-lockfile ukudala iifayile ezizodwa kwiifs ezifanayo (umz., Ukufaka igama lomninimzi kunye ne-pid), sebenzisa isiqhagamshelo (2) ukwenza umnxibelelwano kwifayile yokukhiya. Ukuba isixhumanisi () sibuyisa i-0, ilokhi iphumelele. Ngaphandle koko, sebenzisa imimiselo (2) kwifayile ekhethekileyo ukuba ukhangele ukuba ngaba inani lakhonkco liye landa ukuya kwe-2, kwimeko apho ikhekhi iphinde iphumelele.
O_NOCTTY
Ukuba igama libhekisela kwisixhobo esipheleleyo --- qaphela (4) --- ayiyi kuba yinkqubo yokulawula yenkqubo nokuba ngaba inqubo ayinayo.
O_TRUNC
Ukuba ifayile isele ikhona kwaye iifayile eziqhelekileyo kunye nemodi evulekile ivumela ukubhalwa (okt, i-O_RDWR okanye i-O_WRONLY) iya kuthathwa kwixesha elide 0. Ukuba ifayili ifayile yeFIFO okanye ifowuni yesiphelo, i-flag ye-O_TRUNC ayinakunyuswa. Ngaphandle koko, umphumo we-O_TRUNC awunacacisiwe. ( Kwiinguqu ezininzi ze-Linux ziya kuhoywa; kwezinye iinguqulelo, ziya kubuya impazamo.)
O_APPEND
Ifayile ivuliwe kwimodi ye-append. Ngaphambi kokuba ngamnye ubhale , i-pointer yefayili ifakwe ekupheleni kwefayili, ngokungathi i- lseek . I-OPAPEND ingakhokelela kwiifayile ezonakalisiweyo kwiifayile zefayile zeNFS ukuba inkqubo engaphezulu kweyodwa ifake idatha kwifayile ngexesha elilodwa. Oku kungenxa yokuba i-NFS ayixhasi ukufaka isicelo kwifayili, ngoko i-kernel yomthengi kufuneka ifane nayo, engenakuyenza ngaphandle kobuhlanga.
O_NONBLOCK okanye O_NDELAY
Xa kunokwenzeka, ifayile iyavulwa kwimodi engeyiyo yokukhusela. Akukho nto evulekileyo okanye nayiphi na imisebenzi esilandelayo kwi-descriptor yefayile ebuyiselwayo iya kwenza ukuba inkqubo yokubiza ilinde. Ukusingatha i-FIFOs (iipayipi ezibizwa ngokuba yigama), jonga kwakhona i- fifo (4). Le modi ayifuni ukuba nefuthe kwiifayile ngaphandle kweFIFOs.
O_SYNC
Ifayile ivulelwe i-synchronous I / O. Naliphina ibhala kwisichazi sefayile esiphumelayo siya kuvimba inkqubo yokubiza kuze kube yilapho idatha ibhaliwe ngokomzimba kwi-hardware engaphantsi. Jonga iINTLOKO ezingezantsi, nangona kunjalo.
O_NOFOLLOW
Ukuba igama lekhonkco liqhagamshelweyo, oko kuvuleka. Ukongezwa kwe-FreeBSD, eyongezwa kwiLuxux kwinguqulelo 2.1.126. Izixhumanisi ezibonakalisiweyo kwiinkalo zangaphambili zegama liza kulandelwa. Izihloko ezivela kwi-glibc 2.0.100 kwaye kamva ziquka inkcazo yale flegi; iilena phambi kwe-2.1.126 ziya kuhoywa xa zisetyenziswa .
ODIRECTORY
Ukuba igama lisoloko lisikhombisi , bangela ukuba uvuleke. Le flegi i-Linux-specific, kwaye yongezwa kwinguqulo ye-kernel 2.1.126, ukukhusela iingxaki zokunqaba ukukhonza ukuba i- opendir (3) ibizwa kwi-FIFO okanye ifowuni, kodwa akufanele isetyenziswe ngaphandle kokuphunyezwa kwe- opendir .
O_DIRECT
Zama ukunciphisa imiphumo ye-cache ye-I / O ukuya nakweli fayile. Ngokuqhelekileyo oku kuya kutshabalalisa ukusebenza, kodwa kuncedo kwiimeko ezizodwa, njengokuba xa izicelo zizenza i-caching yazo. Ifayile i- O / O yenziwe ngqo / ukusuka kubasebenzisi bokungena kwendawo. I-O idibeneyo, oko kukuthi, ekugqityiweni kokufunda (2) okanye ukubhala (2) umnxeba wenkqubo, idatha iqinisekisiwe ukuba idluliselwe. Ukutshintshwa kobuninzi, kunye nokulungelelaniswa kwebhokisi lomsebenzisi kunye nokukhutshwa kwefayili kufuneka zonke ziphindwe ngokuphindaphindiweyo kobuninzi bebhloko benkqubo yefayile.
Le flegi ifakwe inkxaso kwiinkqubo ezininzi ze-Unix; Inkxaso yongezwa phantsi kwe-Linux kwi-kernel version 2.4.10.
Isixhobo esibonakalayo esifanayo neso sixhobo sebhloko sichazwa kwi- raw (8).
O_ASYNC
Ukuvelisa isignali (SIGIO ngokungagqibekanga, kodwa oku kungatshintshwa nge fcntl (2)) xa igalelo okanye isiphumo sinokukwazi kule fayile yeenkcukacha. Le nto ifumaneka kuphela kwii-terminals, i-terminals-terminals, kunye neziseko. Bona i- fcntl (2) ngeenkcukacha ezingaphezulu.
O_LARGEFILE
Kwiinkqubo ezingama-32 zenkxaso ezixhasa i-Large Files System, vumela iifayile ezinobungakanani obungenako ukumelwa kwi-bits ezingama-31 ukuba zivule.
Ezinye zeeflegi ezikhethiweyo zingatshintshwa usebenzisa i- fcntl emva kokuba ifayile ivuliwe.
Imodi yokuphikisa ichaza iimvume zokusetyenziswa xa kwenzeka ifayile entsha. Uguqulwa yindlela yokusebenzisa umaski ngendlela eqhelekileyo: iimvume zefayile ediziweyo (imodeli & ~ umask) . Qaphela ukuba le meko isebenza kuphela ekufikeleleni okuzayo kwefayili esanda kudalwa; Ifowuni evulekile eyenza iifayile ezifundwayo kuphela inokubuyisela i-descriptor ifayile yokufunda / ibhali.
Ezi zihlandlo zilandelayo zibonakaliswa kwimodi :
S_IRWXU
Umsebenzisi we-00700 (umnikazi wefayili) ufunde, abhale kwaye ayenze imvume
S_IRUSR (S_IREAD)
Umsebenzisi we-00400 ufunde imvume
S_IWUSR (S_IWRITE)
Umsebenzisi we-00200 ubhale imvume
S_IXUSR (S_IEXEC)
Umsebenzisi we-00100 uqhuba imvume
S_IRWXG
00070 iqela lifunde, libhale kwaye liphumeze imvume
S_IRGRP
I-00040 iqela lifunde imvume
S_IWGRP
I-00020 iqela libhale imvume
S_IXGRP
00010 iqela liqhuba imvume
S_IRWXO
00007 abanye baye bafunda, babhala baze baphumeze imvume
S_IROTH
00004 abanye bafunde imvume
S_IYE
00002 abanye babhala imvume
S_IXOTH
00001 abanye baqhuba imvume
Imodi kufuneka icaciswe xa i- O_CREAT ifakwe kwiiflegi , kwaye inganyanzelwanga ngenye indlela.
ukudala kufana nokuvula ngeeflegi ezilingana no- O_CREAT | O_WRONLY | O_TRUNC .
HLAWULWA NGOKUBALULEKILEYO
uvule kwaye udale ukubuya i-descriptor entsha yefayili, okanye -1 xa kukho iphutha (kwimeko apho, i- errno isetyenziswe ngokufanelekileyo). Qaphela ukuba ivulekile inokuvula iifayile ezikhethekileyo kwifayile, kodwa ukudala ayikwazi ukuyidala - sebenzisa mknod (2) endaweni yoko.
Kwiinkqubo zefayile ze-NFS ezineemephu ze-UID ezivuliwe , zivulekileyo zingabuyisa i-descriptor yefayile kodwa umzekelo, ukufunda (2) izicelo ziphikisiwe nge- EACCES . Oku kungenxa yokuba umthengi uvula ngokujonga iimvume, kodwa iimephu ze-UID zenziwa ngumncedisi emva kokufundwa nokubhala izicelo.
Ukuba ifayile isanda kudalwa, i-atime, i-ctime, i-mtime isetyenziswe kwixesha langoku, kwaye kunjalo ke i-ctime kunye neenkomfa zomncedisi womzali. Ngaphandle koko, ukuba ifayile iguqulwa ngenxa yefayile ye-O_TRUNC, i-timetime yayo kunye ne-mtime field zibekwe kwixesha langoku.
I mpazamo
EEXIST
Inkqubo sele ikhona kwaye i- O_CREAT ne- O_EXCL zisetyenzisiwe.
EISDIR
Inkqubo ibhekisela kwisikhokelo kunye nokufikelela okuceliwe kubandakanye ukubhala (oko kukuthi, O_WRONLY okanye i- O_RDWR isetyenziswe).
EACCES
Ufikelelo oluceliwe kwifayile aluvumelekanga, okanye enye yeenkcukacha kwigama lingazange livumele ukukhangela (ukwenza) imvume, okanye ifayile ayikhoyo kwaye ubhale ukufikelela kumkhombandlela womzali akuvumelekanga.
ENYE
Umendo wawude kakhulu.
BENZA
O_CREAT ayisetyenzisiweyo kunye nefayili egama lingekho. Okanye, inxalenye yecandelo lenkcazo ayikho okanye ikhonkco elingumqondiso.
ENOTDIR
Iqumrhu elisetyenziswe njenge-directory kwi- pathname ayikho, eqinisweni, i-directory, okanye i- O_DIRECTORY icacisiwe kwaye igama lomzila alilona ulawulo.
ENXIO
O_NONBLOCK | U-O_WRONLY usethe, ifayile ebizwa ngokuba yiFIFO kwaye akukho nqubo ifayile ivulekile yokufunda. Okanye, ifayili yifayile ekhethekileyo ifayile kwaye akukho fowuni ehambelanayo ikhoyo.
ENODEV
Inkqubo ibhekisela kwifayile ekhethekileyo kwaye akukho fowuni ehambelanayo ikhona. (Le yi-Linux kernel bug - kule imeko ENXIO kufuneka ibuyiselwe.)
EROFS
Inkqubo ibhekisela kwifayili kwisistimu yefayile efundwayo kuphela kwaye ubhale ukufikelela.
ETXTBSY
Inkqubo ibhekisela kumfanekiso osebenzayo okwenziwa ngoku kwaye ubhala ukufikelela.
EFAULT
Inkcazo yamanqaku ngaphandle kwendawo yokufumana idilesi yakho.
ELOOP
Unxibelelwano oluninzi lweengqamaniso eziye zadibana nazo ekuxazululeni igama lomnxeba , okanye i- O_NOFOLLOW icacisiwe kodwa igama lomzila laliqhagamshelweyo .
ENOSPC
Inkqubo yayiza kudalwa kodwa isixhobo esinegama lomzila asinayo indawo yefayili entsha.
KUNYE
Imemori yekernel enganeleyo ikhoyo.
EMFILE
Inkqubo sele ifumane inani eliphezulu leefayile ezivulekileyo.
KUNYE
Umda kwinani elipheleleyo leefayile ezivulekileyo kwinkqubo sele ifinyelelwe.
Ukuvumelana
SVr4, SVID, POSIX, X / VULE, BSD 4.3 I- O_NOFOLLOW kunye ne- ODIRECTORY iifowuni zi- Linux- ezicacileyo. Omnye unokufuneka achaze i- _GNU_SOURCE macro ukuze afumane iinkcazo zabo.
Zi thintelo
Kukho ukungonakali ezininzi kwiprotocol ephantsi kwe-NFS, echaphazela phakathi kwezinye i- O_SYNC kunye ne- O_NDELAY .
I-POSIX inikezela izinto ezahlukeneyo ezahlukeneyo ze-I / O ezichanekileyo, ezihambelana namaflegi O_SYNC , O_DSYNC kunye ne- O_RSYNC . Okwangoku (2.1.130) zizo zonke ezifanayo phantsi kweLinux.