Mụta Open Command Linux

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.