Nkọwapụta
# gụnyere "A HREF =" faịlụ: /usr/include/sys/types.h "> sys / types.h> #include << A HREF =" faịlụ: /usr/include/sys/stat.h "> sys / stat.h> #include << A HREF = "faịlụ: /usr/include/fcntl.h"> fcntl.h> int open (const char * pathname , fla flags ); oghere (const char * ụzọname , fla flags , mode_t mode ); int creat (const char * pathname , mode_t mode );Nkọwa
A na- eji usoro nhazi usoro ( Linux ) emeghe iji zigharịa ụzọ aha n'ime ihe odide faịlụ (ntakịrị, nọmba na-adịghị mma maka iji ya na I / O ma dị ka ịgụ , ide , wdg). Mgbe oku ahụ na-aga nke ọma, ihe odide faịlụ ahụ laghachiri wil ịbụ ihe odide faịlụ dị ala karịa ugbu a maka usoro ahụ. Oku a na - emepụta oghere mepere emepe, ọ bụghị òkè na usoro ọ bụla ọzọ. (Ma enwere ike ịmepụta faịlụ nwere ike ibido site na oku (2).) Ihe ederede faịlụ ọhụrụ ka a ga-emeghe na-emeghe na-arụ ọrụ (lee fcntl (2)). Ejiri nchịkọta faịlụ ahụ na mbido faịlụ ahụ.
Ntọala kachasị bụ otu n'ime O_RDONLY , O_WRONLY ma ọ bụ O_RDWR nke rịọrọ ka ịmepee faịlụ ahụ na-agụ nanị ya, dee-nanị ma ọ bụ gụọ / dee, kwaa, bitwise- ma ọ bụ 'd na efu ma ọ bụ karịa n'ime ihe ndị a:
O_CREAT
Ọ bụrụ na faịlụ anaghị adị, a ga-eke ya. E debere onye nwe ya (ID njirimara) nke faịlụ ahụ na ID nke njirimara nke usoro. A na-ahazi otu otu (ID otu) ma na nhazi ID nke dị irè ma ọ bụ na nchịkọta ID nke ndekọ nnabata (dabere na ụdị faịlụ na nhọrọ ntanetị, na ụdị ndekọ nnabata, lee, dịka, ugwu nhọrọ bsdgroups na sysvgroups nke sistemụ faịlụ ext2, dịka a kọwara na ugwu (8)).
O_EXCL
Mgbe ejiri O_CREAT mee ihe, ọ bụrụ na faịlụ ahụ dị adị, ọ bụ njehie na oghe ga-ada. N'ebe a, njikọ njikọ ihe dị adị, n'agbanyeghị ebe ọ na-ezo aka. O_EXCL agbajila na usoro NFS faịlụ , mmemme ndị na-adabere na ya maka imechi ihe aga-eme ga-enwe agbụrụ. Ihe ngwọta maka ịmepụta faịlụ atọmịkpo na-eji lockfile bụ ịmepụta faịlụ pụrụ iche na otu fs (dịka, ịmebanye aha njirimara na pid), jiri njikọ (2) mee njikọ na mkpọchi. Ọ bụrụ na njikọ () laghachi 0, mkpọchi ahụ ga-aga nke ọma. Ma ọ bụghị ya, jiri stat (2) na faịlụ pụrụ iche iji chọpụta ma ọ bụrụ na njikọ njikọ ya abawanyela na 2, ebe ọhụụ mkpọchi ahụ na-aga nke ọma.
O_NOCTTY
Ọ bụrụ na ụzọ aha na- ezo aka ngwaọrụ njedebe --- lee tty (4) --- ọ gaghị abụ usoro ịchịkwa njedebe ọbụlagodi na usoro ahụ enweghị otu.
O_TRUNC
Ọ bụrụ na faịlụ ahụ adịworị ma ọ bụ faịlụ mgbe niile na ọnọdụ a na-emeghe na-enye ohere ederede (ntụgharị, bụ O_RDWR ma ọ bụ O_WRONLY) a ga-ede ya n'ogologo 0. Ọ bụrụ na faịlụ a bụ FIFO ma ọ bụ faịlụ ngwaọrụ, a na-elele ọkọlọtọ O_TRUNC. Ma ọ bụghị ya, mmetụta nke O_TRUNC enweghị ọkwa. (N'ọtụtụ nsụgharị Linux ọ ga-eleghara anya; na nsụgharị ndị ọzọ, ọ ga-alọghachite njehie.)
O_APPEND
A na-emeghe faịlụ ahụ na modend mode. Tupu ederede ọ bụla, a na-etinye faịlụ pointer na njedebe nke faịlụ ahụ, dịka ọ bụrụ na lseek . O_APPEND nwere ike iduga faịlụ ndị rụrụ arụ na usoro nchịkọta NFS ma ọ bụrụ na ihe karịrị otu usoro gosipụtara data na faịlụ ozugbo. Nke a bụ n'ihi na NFS akwadoghị ịkwado faịlụ, ya mere kernel ahịa ga-eji ya mee ihe, nke a na-apụghị ime n'enweghị agbụrụ.
O_NONBLOCK ma obu O_NDELAY
Mgbe o kwere mee, a na-emeghe faịlụ ahụ na ọnọdụ na-adịghị egbochi. Ma ihe mmeghe ma ọ bụ ọrụ ọ bụla na-esote na ihe ndekọ nke faịlụ ahụ nke a laghachiri ga-eme ka usoro oku ahụ ichere. Maka njikwa ndị FIFO (aha ụda), hụ kwa fifo (4). Ọnọdụ a ekwesịghị inwe mmetụta na faịlụ ndị ọzọ karịa FIFOs.
O_SYNC
A na-emeghe faịlụ maka I / O. Ihe ọ bụla edepụtara na ihe ndekọ faịlụ ga - eme ka ọ ghara igbochi ọkpụkpọ oku ahụ ruo mgbe e degaara data ahụ na ihe ngwongwo. Lee RESTRICTIONS n'okpuru ebe a.
O_NOFOLLOW
Ọ bụrụ na ụzọ aha bụ njikọ ihe atụ, mgbe ahụ, oghe anaghị ada ada. Nke a bụ ohere FreeBSD, nke agbakwunyere Linux na mbipute 2.1.126. A ga-esochi njikọ njikọta na akụkụ ndị mbụ nke ụzọ aha. Isi ihe site na glibc 2.0.100 na emesia gụnyere nkọwa nke ọkọlọtọ a; mkpụrụ ndụ tupu 2.1.126 ga-eleghara ya ma ọ bụrụ na eji ya .
O_DIRECTORY
Ọ bụrụ na ụzọ aha abụghị ndekọ, mee ka oghere mebie. Ọkọlọtọ a bụ kpọmkwem Linux, a gbakwụnyekwara ya na kernel version 2.1.126, iji zere nsogbu ịjụ ọrụ nke ọ bụla ma ọ bụrụ na a na-akpọ opendir (3) na FIFO ma ọ bụ teepu ngwaọrụ, mana ekwesighi iji ya na mpempe akwụkwọ nke opendir .
O_DIRECT
Gbalịa iwelata mmetụta cache nke I / O gaa na site na faịlụ a. N'ikpeazụ, nke a ga-emebi arụmọrụ, ma ọ bara uru na ọnọdụ ndị pụrụ iche, dị ka mgbe ngwa na-arụ ọrụ nke aka ha. A na-eme / / na E / O faịlụ ozugbo na / site na ntanetị ohere. I / O na-ejikọta ya, yabụ, na ngwụcha nke a gụrụ (2) ma ọ bụ dee (2) usoro oku, a ga-ebuferịrị data agafe. Ntugharị nha, na ntinye nke ntanetị ọrụ na ntinye faịlụ ga-abụ ọtụtụ nke usoro nhazi nke usoro faịlụ ahụ.
A na-akwado ọkọlọtọ a na ọtụtụ usoro nke Unix; E kwadoro nkwado na Linux na kernel version 2.4.10.
A kọwara ihe yiri nke a na-ahụ maka ihe ngọngọ na raw (8).
O_ASYNC
Debe ihe mgbaàmà (SIGIO na ndabara, ma enwere ike ịgbanwe ya site na fcntl (2)) mgbe ntinye ma ọ bụ mmepụta ga-ekwe omume na ihe odide faịlụ a. Njirimara a bụ naanị maka ikpo okwu, njedebe ikuku, na ntọala. Hụ fcntl (2) maka nkọwa ndị ọzọ.
O_LARGEFILE
Na usoro 32-bit nke na-akwado Usoro Ntanetị, kwe ka faịlụ ndị enweghị ike ịnọchite anya ya na 31 bits ị ga-emeghe.
Ụfọdụ n'ime flags nhọrọ a nwere ike ịgbanwe site na iji fcntl mgbe e mepechara faịlụ ahụ.
Ọnọdụ esemokwu na- ekwenye ikikere iji mee ihe ma ọ bụrụ na e kere faịlụ ọhụrụ. A na-agbanwe ya site n'omask usoro ahụ na mbụ: ikikere nke faịlụ ndị e kere eke bụ (mode & ~ umask) . Rịba ama na ọnọdụ a na-emetụta ọbịbịa nke faịlụ ọhụrụ ahụ; oghere a na-emeghe nke na-emepụta faịlụ na-agụ naanị nwere ike iweghachite onye na-ede akwụkwọ / dee faịlụ.
A na-enye njirimara ihe atụ ndị na-esonụ maka ọnọdụ :
S_IRWXU
Onye ọrụ (onye nwe faịlụ) 00700 agụla, dee ma mebie ikikere
S_IRUSR (S_IREAD)
00400 onye ọrụ na-agụ ikikere
S_IWUSR (S_IWRITE)
Onye ọrụ ọrụ 00200 nwere ikikere ederede
S_IXUSR (S_IEXEC)
00100 onye ọrụ emeela ikikere
S_IRWXG
00070 agụla, dee ma mebie ikikere
S_IRGRP
00040 agụwo ikike
S_IWGRP
00020 nwere akwụkwọ ikike
S_IXGRP
00010 emeela ikikere
S_IRWXO
00007 ndị ọzọ agụwo, dee ma mebie ikikere
S_IROTH
00004 ndị ọzọ agụla ikikere
S_IWOTH
00002 ndị ọzọ nwere akwụkwọ ikikere
S_IXOTH
00001 ndị ọzọ emeela ikikere
a ghaghị ịkọwapụta ọnọdụ mgbe O_CREAT nọ na flags , ma eleghara ya anya.
emepụta na- emeghe na flags hà na O_CREAT | O_WRONLY | O_TRUNC .
Nweghachi Ụgwọ
meghee ma mepụtaghachi ihe odide faịlụ ọhụrụ ahụ, ma ọ bụ -1 ọ bụrụ na njehie mere (nke ikpe ahụ, errno setịpụrụ n'ụzọ kwesịrị ekwesị). Rịba ama na imeghe nwere ike mepee faịlụ pụrụ iche ngwaọrụ, ma mepụtara enweghị ike ịmepụta ha - jiri mknod (2) kama.
Na faịlụ NFS na njikwa ndepụta UID, enwere ike weghachite ihe odide faịlụ mana mana gụọ akwụkwọ (2) ka ejiri EACCES kwenye . Nke a bụ n'ihi na onye ahịa ahụ na- emepee site na ịlele ikikere, mana uzo UID na-arụ ọrụ site na ihe nkesa ahụ mgbe ị gụrụ ma tinye arịrịọ.
Ọ bụrụ na faịlụ ọhụrụ ahụ ekepụtara ya, oge elekere ya, ctime, oge ntanetị ka edobere na oge ugbu a, otú ahụkwa ka oge ctime na oge oge ndekọ ndekọ nna. Ma ọ bụghị ya, ọ bụrụ na faịlụ ahụ gbanwere n'ihi ọkọlọtọ O_TRUNC, a na-etinye oge ctime na oge nhazi oge ugbu a.
Njehie
EEXIST
Enweela ụzọ aha ma O_CREAT na O_EXCL .
EISDIR
namename na- ezo aka na ndekọ na ohere rịọrọ ka e dere (ya bụ, O_WRONLY ma ọ bụ O_RDWR ).
EACCES
Enweghi ike ịnweta faịlụ ahụ, ma ọ bụ otu n'ime ederede na aha aha adịghị ekwe ka nchọpụta (mezuo ikike, ma ọ bụ faịlụ ahụ adịbeghị, ma edee ederede na ndekọ ndị nne na nna agaghị ekwe.
ENAMETOOLONG
ahaname dị ogologo.
KWA
O_CREAT adịghị edozi ma faịlụ aha ahụ adịghị adị. Ma ọ bụ, ihe ndekọ mpaghara na trackname adịghị adị ma ọ bụ na njikọ njikọ ihe egwu.
Bido
A na-eji ihe eji eme ihe dị ka ndekọ na namesname , n'eziokwu, ndekọ, ma ọ bụ O_DIRECTORY kwuru kpọmkwem na ụzọ aha abụghị ndekọ.
ENXIO
O_NONBLOCK | O_WRONLY setịpụrụ, faịlụ aha ya bụ FIFO ma ọ dịghị usoro enwere faịlụ maka ịgụ. Ma ọ bụ, faịlụ ahụ bụ faịlụ pụrụ iche ngwaọrụ ma enweghị ngwaọrụ kwekọrọ ekwekọ.
ENODEV
ụzọ aha na- ezo aka na faịlụ pụrụ iche ngwaọrụ ma enweghị ngwaọrụ kwekọrọ ekwekọ. (Nke a bụ Linux kernel ahụhụ - na ọnọdụ a ENXIO ga-alaghachi.)
Okpukpe
ụzọ aha na- ezo aka na faịlụ na faịlụ na-agụ na naanị faịlụ ma na-ede ederede a rịọrọ.
ETXTBSY
ụzọ aha na- ezo aka na ihe oyiyi a na-ebibi ebibi nke a na-egbu ugbu a ma na-ede ederede.
EFAULT
ụzọ na-eso ụzọ n'èzí ohere ịnweta adres gị.
ELOOP
Enwere ọtụtụ njikọ ihe nnọchianya na ịmepụta ụzọ aha , ma ọ bụ O_NOFOLLOW e kwuru kpọmkwem mana ụzọ aha bụ njikọ njikọta.
ENOSPC
A ghaghị ịmepụta ụzọ aha ma ngwaọrụ nke nwere ụzọ aha enweghị ohere maka faịlụ ọhụrụ ahụ.
ENOMEM
Enweghi nchekwa nchekwa kernel dị.
EMFILE
Usoro nwere ugbua ọnụ ọgụgụ nke faịlụ meghere.
MGBE
Ọnụ ọgụgụ nke ọnụ ọgụgụ faịlụ dị na usoro ahụ eruola.
Gbanyere
SVr4, SVID, POSIX, X / OPEN, BSD 4.3 O_NOFOLLOW na flags O_DIRECTORY bụ Linux -kekepụtara. Otu nwere ike ịkọwa macro NGNU_SOURCE iji nweta nkọwa ha.
Mgbochi
Enwere otutu nsogbu na protocol na-emetụta NFS, na-emetụta ndị ọzọ O_SYNC na O_NDELAY .
POSIX na-enye ụzọ dị iche iche dị iche iche nke I / O, ndị kwekọrọ na flags O_SYNC , O_DSYNC na O_RSYNC . Ugbu a (2.1.130) ndị a niile bụ ndị dị n'okpuru Linux.