Isiqubulo
#include << A HREF = "ifayela: /usr/include/sys/types.h"> sys / types.h> # hlanganisa i- << A HREF = "ifayela: /usr/include/sys/stat.h"> sys / stat.h> # hlanganisa i-<< A HREF = "ifayela: /usr/include/fcntl.h"> fcntl.h> int evulekile (igama le-const char * , amaflegi wangaphakathi ); ivuliwe (i-const char * ithrekhi , amaflegi we- int , imodi ye- mode_t ); int creat (const char * umzila , mode_t imodi );Incazelo
Umyalo ovulekile () oshayela ucingo lwe-linux usetshenziselwa ukuguqula igama lomzila libe yisichazamazwi sefayela (inamba encane, engeyona embi yokusetshenziswa ku-I / O elandelayo njengokufana nokufunda , ukubhala , njll.). Uma ucingo luphumelele, isichazamazwi sefayela sibuyele sibe isichazamazwi sefayela esingaphansi okwamanje asivulekele inqubo. Le kholi idala ifayela elisha elivulekile, elingabelwanga nanoma iyiphi enye inqubo. (Kodwa amafayela avulekile avulekile angavela ngekholi (2) ucingo lwesistimu.) I-descriptor entsha yefayela ihlelwe ukuhlala ivulekile kuwo wonke umsebenzi wokusebenza (bheka fcntl (2)). I-offset yefayela isethwe ekuqaleni kwefayela.
Amafulege wepharamitha ngenye ye- O_RDONLY , O_WRONLY noma i- O_RDWR ecela ukuvula ifayela lokufunda kuphela, ukubhala kuphela noma ukufunda / ukubhala, ngokulandelana, kancane- noma nge-zero noma ngaphezulu kokulandelayo:
O_CREAT
Uma ifayela alikho lizodalwa. Umnikazi (i-ID yomsebenzisi) yefayela usethe ku-ID yomsebenzisi esebenzayo yenqubo. Ubunikazi beqembu (i-ID yeqembu) usethelwe ku-ID yeqembu eliphumelelayo lenqubo noma ku-ID yeqembu yomshuwalense womzali (kuye ngokuthi uhlobo lwamafayela uphinde ukhethe izinketho, nemodi yomhlahlandlela womzali, bheka, isib. izinketho ze- bsdgroups nama- sygroups we- ext2 filesystem , njengoba kuchaziwe entabeni (8)).
O_EXCL
Uma isetshenziswe ne- O_CREAT , uma ifayela selivele likhona kuyiphutha futhi okuvulekile kuzohluleka. Kulo mongo, isixhumanisi esingokomfanekiso sikhona, kungakhathaliseki ukuthi amaphuzu ayo aphi. I-O_EXCL iphukile kumahlelo wefayela le-NFS , izinhlelo ezithembele kuyo ukwenza imisebenzi yokukhiya zizoqukatha isimo somjaho. Isixazululo sokwenza ifayela le-atomic lokukhiya usebenzisa i-lockfile ukwakha ifayela eliyingqayizivele kumafs afanayo (isib. Ukufaka igama lomsingisi kanye ne-pid), sebenzisa isixhumanisi (2) ukwenza isixhumanisi ku-lockfile. Uma isixhumanisi () sibuyisa i-0, ilokhi iphumelele. Uma kungenjalo, sebenzisa isimiso (2) efayeleni eliyingqayizivele ukuze uhlole ukuthi inani laso lokuxhumanisa liye lafika ku-2, lapho kwenzeka ukuthi ilokhi liphumelele futhi.
O_NOCTTY
Uma igama lendlela libhekisela kudivayisi ebulalayo --- bheka tty (4) --- ngeke ibe yindawo yokulawula yenqubo ngisho noma inqubo ayinayo.
O_TRUNC
Uma ifayela selivele likhona futhi ifayela ejwayelekile futhi imodi evulekile ivumela ukubhala (okungukuthi, i-O_RDWR noma i-O_WRONLY) iyobekwa eceleni ku-ubude 0. Uma ifayela liyifayela le-FIFO noma idivayisi yokugcina, i-O_TRUNC ifulege inganakwa. Ngaphandle kwalokho, umphumela we-O_TRUNC awuqinisekisiwe. (Kuzinguqulo eziningi ze- Linux ngeke zilandelwe; kwezinye izinguqulo, izobuyisela iphutha.)
O_APPEND
Ifayela livuliwe kwimodi ye-append. Ngaphambi kokubhala ngamunye, i-pointer yefayela imisiwe ekugcineni kwefayela, njengokungathi nge- lseek . I-O_APPEND ingaholela kumafayela abonakele kumafayili wefayela le-NFS uma inqubo engaphezu kweyodwa ifaka idatha kwifayili ngesikhathi esisodwa. Lokhu kungenxa yokuthi i-NFS ayisekeli ukufaka amafayili efayeleni, ngakho-ke ikhasimende lekhasimende kumele lilingise, elingenakwenziwa ngaphandle komjaho.
O_NONBLOCK noma u- O_NDELAY
Uma kunokwenzeka, ifayela livuliwe imodi engavinjelwe. Akukho okuvulekile noma okunye okulandelayo okulandelayo kwi-descriptor yefayela okubuyiselwe kuzokwenza ukuthi inqubo yokushaya ilinde. Ngokuphatha ama-FIFOs (amapayipi aqanjwe ngamagama), bheka futhi amahlanu (4). Le medi akudingeki ibe nomthelela kumafayela ngaphandle kwe-FIFOs.
O_SYNC
Ifayela livulelwe i-synchronous I / O. Noma yikuphi ukubhalwa kwesikhombisi sefayili elandelayo kuzovimbela inqubo yokubiza kuze kube yilapho idatha ibhalwa ngokomzimba kwi-hardware engaphansi. Bona IZINDLELA ezingezansi, noma kunjalo.
O_NOFOLLOW
Uma igama lomzila liyisixhumanisi esingokomfanekiso, i-evulekile ivulekile. Lokhu kwandiswa kwe-FreeBSD, okungeziwe ku-Linux ku-version 2.1.126. Izixhumanisi ezifanekisayo ezingxenyeni zangaphambili zomgwaqo zizolandelwa. Izihloko ezisuka ku-glibc 2.0.100 futhi kamuva zifaka incazelo yale fulegi; izinhlamvu ngaphambi kuka 2.1.126 zingayinaki uma zisetshenzisiwe .
O_DIRECTORY
Uma igama legama aliyona isiqondisi, bangela ukuthi kuvuleke ukuhluleka. Leli fuleli liyi-Linux ngqo, futhi yanezelwa kwinguqulo ye-kernel 2.1.126, ukugwema izinkinga zokungafuni izinkonzo uma i- opendir (3) ibizwa kudivayisi ye-FIFO noma itekisi, kodwa akumele isetshenziswe ngaphandle kokusetshenziswa kwe- opendir .
O_DIRECT
Zama ukunciphisa imiphumela ye-cache ye-I / O ukuya nakule fayela. Ngokuvamile lokhu kuzokwehlisa ukusebenza, kodwa kuyasiza ezimweni ezikhethekile, njengalapho izinhlelo zokusebenza zenza i-caching yazo. Ifayela I / O yenziwe ngokuqondile / kusuka kubasebenzisi bokugcina isikhala. I-O iyinhlanganisela, okungukuthi, ekuqedeni ucingo lokufunda (2) noma ukubhala (2), idatha iqinisekisiwe ukuthi idluliselwe. Ukudluliswa kokulinganisa, nokulungiswa kwe-buffer yomsebenzisi kanye nefayili ye-offset kufanele zonke zibe yizixuku zobungako besikhombandlela sesistimu yefayela.
Leli fulegi lisekelwa eziningana zezinhlelo ezifana ne-Unix; ukusekelwa kwengezwe ngaphansi kwe-Linux kwinguqulo ye-kernel 2.4.10.
Isixhumi esibonakalayo esifanayo semishini yokuvimba ichazwa ku- eluhlaza (8).
O_ASYNC
Yenza isignali (i-SIGIO ngokuzenzakalelayo, kodwa lokhu kungashintshwa nge- fcntl (2)) uma ukufakelwa noma okukhiphayo kungenzeka kule ncazelo yefayela. Lesi sici sitholakala kuphela kuma-terminals, ama-terminal terminals, nama-sockets. Bheka i- fcntl (2) ngeminye imininingwane.
O_LARGEFILE
Kuzinhlelo ezingu-32-bit ezisekela i-Large Files System, vumela amafayela angama-sizes awakwazi ukumelwa ngamabhukithi angu-31 ukuze avulwe.
Amanye alawa mafulege angakhethayo angashintshwa esebenzisa fcntl ngemuva kokuthi ifayela livuliwe.
Imodi yokuphikisa ichaza izimvume zokusebenzisa uma kwenzeka ifayela elisha lidalwa. Iguqulwa ngu- umask yenqubo ngendlela evamile: izimvume zefayela elenziweyo (imodi & ~ umask) . Qaphela ukuthi le medi isebenza kuphela ekufinyeleleni okuzayo kwefayela elisha; ucingo oluvulekile oludala ifayela lokufunda kuphela lingahle libuyele isichazamazwi sefayela lokufunda / bhala.
Izindinganiso ezilandelayo ezingokomfanekiso zinikwe imodi :
S_IRWXU
Umsebenzisi we-00700 (umnikazi wefayela) ufunde, abhale futhi asebenzise imvume
I-S_IRUSR (S_IREAD)
Umsebenzisi we-00400 ufunde imvume
I-S_IWUSR (S_IWRITE)
Umsebenzisi we-00200 unemvume yokubhala
S_IXUSR (S_IEXEC)
Umsebenzisi we-00100 ukhiphe imvume
S_IRWXG
00070 iqembu lifunde, libhale futhi lenze imvume
S_IRGRP
00040 iqembu lifunde imvume
S_IWGRP
Iqembu le-00020 linemvume yokubhala
S_IXGRP
00010 iqembu lenze imvume
S_IRWXO
Abanye abangu-00007 baye bafunda, babhala futhi bakhipha imvume
S_IROTH
Abanye abangu-00004 bafunde imvume
S_IWOTH
Abanye abangu-00002 babhala imvume
S_IXOTH
Abanye abangu-00001 bakhipha imvume
imodi kumele icaciswe uma i- O_CREAT ivela kumaflegi , futhi inganakiwe ngenye indlela.
ukudala kufana nokuvula ngamafulegi alingana no- O_CREAT | O_WRONLY | O_TRUNC .
QAPHELA UKUVALA
uvule futhi udale ukubuyisa i-descriptor entsha yefayela, noma -1 uma kwenzeka iphutha (uma kunjalo, i- errno isethwe ngokufanele). Qaphela ukuthi ivulekile ingavula amafayela akhethekile wedivayisi, kodwa ukudala akukwazi ukuwadala - sebenzisa i- mknod (2) esikhundleni salokho.
Kuhlelo lwefayela le-NFS elinemephu ye-UID enikwe amandla, ivulekile ingabuyisa i-descriptor yefayela kodwa isib. Ukufunda (2) izicelo ziphikisiwe nge- EACCES . Lokhu kungenxa yokuthi iklayenti yenza ivulekile ngokuhlola izimvume, kodwa ukufakwa kwe-UID kwenziwa yiseva lapho kufundwa nokubhala izicelo.
Uma ifayela lisanda kudalwa, i-atime, i-ctime, amasimu we-mtime asetshenziselwa isikhathi samanje, ngakho-ke kungukuthi i-ctime kanye nezinkambu zokuthola umkhombandlela womzali. Uma kungenjalo, uma ifayela liguqulwa ngenxa yefulegi le-O_TRUNC, amasimu ayo kanye nezinkinobho ze-mtime zisethelwe esikhathini samanje.
Amaphutha
EEXIST
I-pathname isivele ikhona futhi i- O_CREAT ne- O_EXCL zisetshenzisiwe.
EISDIR
inkomba ibhekisela kumhlahlandlela kanye nokufinyelela okuceliwe okubhaliwe okubhaliwe (okungukuthi, i- O_WRONLY noma i- O_RDWR isethiwe).
EACCES
Ukufinyelela okuceliwe kufayela akuvunyelwe, noma enye yezinkomba ku- pathname ayizange ivumele ukucinga (yenza) imvume, noma ifayela alikho okwamanje futhi ukubhala ukufinyelela kwirekhodi lomzali akuvumelekile.
ENAMETOOLONG
umzila wawude kakhulu.
YENZA
I-O_CREAT ayisethiwe futhi ifayela elibiziwe alikho. Noma, isakhiwo somhlahlandlela ku- pathname asikho noma isixhumanisi esingokomfanekiso esiyingozi.
ENOTDIR
Isici esisetshenziswe njengenqolobane emgwaqweni akusilo, empeleni, isiqondisi, noma i- O_DIRECTORY icacisiwe futhi igama lomzila akulona isiqondisi.
ENXIO
O_NONBLOCK | I-O_WRONLY isethiwe, ifayela elibizwa ngokuthi i-FIFO futhi akukho nqubo ivuliwe ifayela lokufunda. Noma, ifayela liyifayela ekhethekile yedivayisi futhi akukho idivayisi ehambisanayo ekhona.
ENODEV
i-pathname ibhekisela efayeleni ekhethekile yedivayisi futhi akukho idivayisi ehambisanayo ekhona. (Lena i-Linux kernel bug - kulesi simo ENXIO kufanele ibuyiselwe.)
EROFS
I-pathname ibhekisela efayeleni ohlelweni lokufayela olufundwayo kuphela futhi ukubhala ukufinyelela kuceliwe.
ETXTBSY
I-pathname ibhekisela esithombeni esisebenzayo esenziwa njengamanje futhi sibheka ukufinyelela okuceliwe.
EFAULT
amaphuzu amathrekhi ngaphandle kwesikhala sakho sekheli elifinyeleleka.
ELOOP
Izixhumanisi eziningi ezingokomfanekiso zihlangene ekuxazululeni igama lomzila , noma i- O_NOFOLLOW icacisiwe kodwa igama lomzila laliyisixhumanisi esingokomfanekiso.
ENOSPC
indlela yokudinga izodalwa kodwa idivayisi equkethe igama lomzila ayinayo indawo yefayela elisha.
BENZA
Imemori ye-kernel ayanele ayitholakali.
EMFILE
Inqubo isivele inenani elikhulu lamafayela avuliwe.
ENFILE
Umkhawulo kunani lezingqikithi zamafayela avuliwe ohlelweni sesifinyelelwe.
Iyavumelana
SVr4, SVID, POSIX, X / OPEN, BSD 4.3 Ama- flags O_NOFOLLOW ne- O_DIRECTORY yi- Linux- ecacile. Omunye kungadingeka ukuthi achaze i- _GNU_SOURCE macro ukuthola izincazelo zawo.
Izithibelo
Kukhona ukungalungi okuningi kwiphrotholi engaphansi kwe-NFS, ethinta phakathi kweminye i- O_SYNC no- O_NDELAY .
I-POSIX inikeza izinhlobo ezihlukene ezintathu ze-O / O ezivumelanisiwe, ezihambisana namafulegi O_SYNC , O_DSYNC no- O_RSYNC . Njengamanje (2.1.130) lawa onke afanayo ngaphansi kwe-Linux.