Funda i-Linux Command Open

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.