Akohia te Open Command Open

Whakamutunga

#include << A HREF = "kōnae: /usr/include/sys/types.h"> sys / types.h> #include << A HREF = "kōnae: /usr/include/sys/stat.h"> sys / stat.h> #include << A HREF = "te kōnae: /usr/include/fcntl.h"> fcntl.h> i te whakatuwheratia (const char * pathname , i roto i te haki ); int whakatuwhera (const char * ingoa , whara whara, mode mode ); int hanga (const char * pathname , mode_t tikanga );

Whakaahuatanga

Ko te tono whakatuwherahia () ka whakamahia hei whakamahi i te ingoa tohu ki te kaituhi kōnae (he iti, he koreutu mo te whakamahi i te I / O muri me te panui , te tuhituhi , me etahi atu). A, no te angitu o te piiraa, ka hoki mai te kaituhi kōnae ki te kaituhi kōnae iti rawa i te whakatuwheratanga mo te tukanga. Ko tenei piiraa ka waihanga i tetahi kōnae tuwhera hou, kaore i te korero ki tetahi atu tukanga. (Ka taea te tuwhera i nga kōnae tuwhera mai i te pikaunga (2) waea.) Kua whakaturia te kaituhi kōnae hou ki te tuwhera i nga mahi mahi (tirohia te fcntl (2)). Kua tautuhia te whakautu kōnae ki te timatanga o te kōnae.

Ko nga haki tawhito ko tetahi o O_RDONLY , O_WRONLY , ko O_RDWR ranei e tono ana kia whakatuwheratia te panui-anake, tuhi-anake, tainui / tuhituhi ranei, iaa, bitwise- ranei 'd me te kore ranei o nga mea e whai ake nei:

O_CREAT

Mena kaore te kōnae i te tīariari, ka waihangatia. Ko te rangatira (ID kaiwhakamahi) o te kōnae e whakaturia ana ki te ID kaiwhakamahi whai hua o te tukanga. Ko te mana o te rōpū (ID rōpū) ka whakaturia ki te raupapa rōpū rōpū whai hua o te tukanga, ki te ID rōpū ranei o te whaiaronga matua (i runga i te momo momo kōnae me te tautuhinga maunga, me te aratau o te whaiaronga matua, tirohia, hei tauira, te maunga ngā kōwhiringa bsdgroups me ngā sysvgroup o te pūnaha kōnae ext2, pērā i te whakaahua i te maunga (8)).

O_EXCL

Ina whakamahia ki a O_CREAT , mehemea kua tohua te kōnae, he hapa tena, ka ngaro te tuwhera . I roto i tenei horopaki, kei te noho te hononga tohu, ahakoa te mea kei hea nga korero ki a ia. Kua pakaruhia te O_EXCL i runga i nga pünaha kōnae NFS , ko nga kaupapa e whakawhirinaki ana ki a ia mo te mahi mahi kati ka uru te ahua o te whakataetae. Ko te otinga mo te mahi i te kopono aukati ma te whakamahi i te haumaru ko te hanga i tetahi kōnae ahurei i runga i nga fs ano (hei tauira, whakauru i te ingoa ingoa me te piriti), whakamahia te hono (2) hei hono i te morou. Mena kua hono 0 (hono) , ka angitu te raka. Kaore, ka whakamahi i te stat (2) i runga i te kōnae ahurei ki te tirotiro mehemea kua piki ake tona tatau hono ki te 2, i roto i taua take ka angitu ano te raka.

O_NOCTTY

Mena te ingoa o te ingoa e pa ana ki tetahi taputapu matatau - tirohia te tty (4) --- kaore e waiho hei tukatuka i te taraiwa ahakoa kaore he tukanga.

O_TRUNC

Mena kua noho tonu te kōnae, he kōnae auau me te mahinga tuwhera ka taea te tuhi (hei tauira, ko O_RDWR ranei O_WRONLY) ka tukuna ki te roa 0. Mena he kōnae FIFO ranei, he taputapu raanei ranei te kōnae, kaore te tohu o O_TRUNC i warewarehia. Kaore, kaore i te whakahuatia te hua o O_TRUNC. (I runga i te maha o nga putanga Linux he mea kaore e warewarehia; i etahi atu putanga, ka hoki mai ano he hapa.)

O_APPEND

Kua whakatuwheratia te kōnae i te aratau tono. I mua i te tuhituhi takitahi, ka tuhia te poitohu kōnae i te pito o te kōnae, me te mea kei te penehi . Ka taea e O_APPEND te arahi ki nga kōnae kino i runga i nga pūnaha kōnae NFS ki te neke atu i te kotahi tukanga tuku raraunga ki tetahi kōnae i te wa kotahi. Ko te mea na te mea kaore e tautokohia ana e NFS te whakaingoa ki tetahi kōnae, na te kiritaki o te kiritaki e whakatauira, kaore e taea te mahi mehemea kaore he momo whakataetae.

O_NONBLOCK ranei O_NDELAY

Ki te taea, ka tuwhera te kōnae i roto i te aukati kore-aukati. Kaore hoki nga mahi whakatuwhera me nga mahi e whai ake nei i runga i te kaituhi kōnae ka whakahokia mai ka tukuna te tukanga karanga. Mo te mahinga o nga FIFO (nga putunga ingoa), tirohia hoki te whao (4). Kaore he tikanga o tenei mahinga i runga i nga kōnae atu i nga FIFO.

O_SYNC

Kua tuwhera te kōnae mo te I / O. Ma te tuhi katoa ki te kaituhi o nga kaituhi hua ka pakaru i te tukanga karanga kia tae noa ki te tuhi i te raraunga ki te taputapu o raro. Tirohia nga RESTRICTIONS i raro, ahakoa.

O_NOFOLLOW

Mena he ingoa tohu te ingoa tupapaku , kaore i tuwhera. Koinei te toronga FreeBSD, i tapiritia ki Linux i te putanga 2.1.126. Ko nga hononga tohu i nga waahanga o mua o te ingoa ka whai tonu. Ko nga pane mai i te glibc 2.0.100 me muri mai ko te whakamaramatanga o tenei haki; Ko nga kernels i mua i te 2.1.126 ka kore e mohio ki te whakamahi .

O_DIRECTORY

Mena ko te ingoa ingoa kaore he whaiaronga, me whakatuwhera ki te kore. Ko tenei haki he Linux-motuhake, a kua whakaurua ki te putanga o te koiora 2.1.126, ki te karo i nga raru whakautu-o-ratonga mēnā ka karangahia te opendir (3) ki tetahi pūrere FIFO ranei, engari kaua e whakamahia i waho o te whakatinanatanga o te opendir .

O_DIRECT

Me ngana ki te whakaiti i nga parenga o te hiko o te I / O ki a mai i tenei kōnae. I te nuinga o tenei, ka whakaitihia te mahi, engari he mea whai hua i nga waahi motuhake, penei i te wa e whakamahia ana e nga tono o ratou ake waahanga. Kei te tika tonu te mahi I / O / I i te / mai i nga kaipupuri takiwa kaiwhakamahi. Ko te I / O e mahi tahi ana, arā, i te otinga o te panui (2), te tuhi ranei (2), kua whakawhitia te raraunga. Ko nga whakawhitinga whakawhiti, me te hanganga o te kaitautoko kaiwhakamahi me te whakaheke i te kōnae he maha nga waahanga o te rahi poraka arorau o te pūnaha kōnae.
Ka tautokona tenei haki ki runga i te maha o nga punaha Unix-like; Kua honoa te tautoko i raro i te Linux i roto i te putanga kernel 2.4.10.
Kei te whakamaramahia te hanganga o te waahanga whakapae mo nga taputapu poraka i te rawake (8).

O_ASYNC

Whakaritehia he tohu (SIGIO taunoa, engari ka taea te whakarereke ma te fcntl (2)) ka taea te whakauru mai, te putanga ranei i runga i tenei kaituhi kōnae. Ko tenei āhuatanga anake e wātea ana mo nga raina, nga pseudo-terminals, me nga turanga. Tirohia te fcntl (2) mo etahi atu taipitopito.

O_LARGEFILE

I runga i te 32-bit e tautoko ana i te Pūnaha Whakahaere Nui, tukua kōnae e kore e taea te tohu i te rahi i roto i te 31 meneti ki te whakatuwhera.

Ka taea te whakarereke etahi o enei haki ki te whakamahi i te fcntl i muri i te whakatuwheratanga o te kōnae.

Ko te tikanga tautohetohe e tohu ana i nga whakaaetanga hei whakamahi i te waahanga ka hangaia he kōnae hou. Kua whakarereketia e te umask o te tukanga i te huarahi o mua: ko nga whakaaetanga o te kōnae i hangaia (ko te mode & ~ umask) . Kia mahara ko tenei mahinga anake e pa ana ki nga whakauru o mua o te kōnae hou i hangaia; ko te karanga tuwhera e hangaia ana i te kōnae pānui-anake ka hoki mai ano i te kaituhi panui korero / tuhituhi.

Ko nga tohu tohu tohu e whai ake nei e whakaratohia ana mo te aratau :

S_IRWXU

00700 te kaiwhakamahi (kaipupuri kōnae) kua panui, tuhi me te whakaputa whakaaetanga

S_IRUSR (S_IREAD)

00400 kua paahitia e te kaiwhakamahi te whakaaetanga

S_IWUSR (S_IWRITE)

00200 te kaiwhakamahi he whakaaetanga tuhituhi

S_IXUSR (S_IEXEC)

00100 kua mahia e te kaiwhakamahi te whakaaetanga

S_IRWXG

00070 te rōpū kua pānui, tuhi me te whakamana whakaaetanga

S_IRGRP

00040 rōpū kua pānui i te whakaaetanga

S_IWGRP

00020 he rōpū tuhi tuhituhi

S_IXGRP

00010 kua mahihia e te rōpū te whakaaetanga

S_IRWXO

00007 kua oti etahi atu te tuhituhi, tuhia me te whakamana whakaaetanga

S_IROTH

00004 kua oti etahi atu te korero whakaaetanga

S_IWOTH

00002 etahi atu he whakaaetanga tuhituhi

S_IXOTH

00001 kua tukuna e etahi atu te whakaaetanga

Me tautuhi te aratau i te wa e noho ana a O_CREAT i nga haki , a kaore he aha.

he rite te hanganga ki te whakatuwhera me nga haki e rite ana ki O_CREAT | O_WRONLY | O_TRUNC .

WHAKAMAHI TUATAHI

tuwhera me te whakahoki mai i te kaituhi hou o te kōnae, ma te -1 ranei mehemea i puta mai he hapa (i tera waa, ka whakaturia te errno tika). Kia mahara kei te tuwhera te tuwhera i nga kōnae motuhake, engari kaore e taea te waihanga - whakamahia te nama (2) hei utu.

I runga i nga pūnaha kōnae NFS me te mahere UID kua whakahohea, ka taea te tuhi i tetahi kaituhi kōnae, engari hei panui (2) ka whakakorehia nga tono ki a EACCES . Ko te mea tenei na te mea ka tuwhera te kiritaki na roto i te tirotiro i nga whakaaetanga, engari ko te mahere UID e mahia ana e te tūmau i runga i te panui me te tuhi tono.

Mena kua hangaia hou te kōnae, kua taatatia tana waahi, ctime, waahi waatea ki te wa o te wa, me nga waahi o te wa ctime me nga waahi o te papaaatua matua. Mena, mehemea kua whakarereketia te kōnae na te tohu O_TRUNC, ka whakaturia ana nga waahi waahi me nga waatea ki te wa o te wa.

Hapa

EEXIST

Kua tohua te ingoa o te ingoa me te O_CREAT me te O_EXCL .

EISDIR

Ko te ingoa ingoa e tohu ana ki te whaiaronga me te huarahi e hiahiatia ana kia tuhia (ara ko O_WRONLY , O_RDWR ranei).

EACCES

Kaore i whakaaetia te uru atu ki te kōnae, kaore ano tetahi o nga rehitatanga i te ingoa kaore i whakaaetia te rapu (mahia) whakaaetanga, kaore ano hoki te kōnae i te tīariari, heoi kaore e whakaaetia te uru ki te paparangi matua.

ENAMETOOLONG

He roa rawa te ingoa .

Tuhinga

Kaore i whakaturia a O_CREAT, a, kaore i te tīariari te kōnae ingoa. Ranei, kaore he waahanga whaiaronga i te ingoa ingoa kaore i te waahi, he hononga taapiri ano hoki.

Tuhinga

Ko te waahanga i whakamahia hei raupapa i te ingoa ingoa kaore i te, he pono, he whaiaronga, he O_DIRECTORY i tautuhia, ko te ingoa ingoa ehara i te whaiaronga.

Tuhinga

O_NONBLOCK | Kua whakaritea a O_WRONLY, ko te ingoa ingoa ko FIFO, kaore ano he tukanga kua tuwhera te kōnae mo te korero. Ranei, he kōnae motuhake te kōnae, kaore ano hoki he taputapu.

ENODEV

Ko te ingoa ingoa e tohu ana ki te kōnae motuhake me te kore o te hoahoa e tu ana. (Koinei te putea taiao Linux - i roto i tenei ahua me whakahoki mai a ENXIO.)

Tuhinga

Ko te ingoa ingoa e tohu ana ki tetahi kōnae i runga i te kaapae reta-anake, ka tuhihia te tono.

ETXTBSY

Ko te ingoa ingoa e tohu ana ki tetahi whakapakoko e taea ana te mahi, me te tuhituhi i te tono.

EFAULT

nga tohu ingoa kei waho o to waahi urunga korero.

ELOOP

He maha nga hononga tohu i tutuki ki te whakatau i te ingoa o te ingoa , i tohuhia ranei a O_NOFOLLOW , engari ko te ingoa tohu he hononga tohu.

ENOSPC

Ko te ingoa tohu i hanga engari ko te pūrere kei roto i te ingoa kaore he wahi mo te kōnae hou.

ENOMEM

Kei te wātea te maharakore o te kernel.

Tuhinga

Ko te tukanga kua tohua te nuinga o nga kōnae.

Tuhinga

Kua tae te rohe mo te maha o nga kōnae kua tuwhera ki te punaha.

Whakaaro ki

SVr4, SVID, POSIX, X / OPEN, BSD 4.3 Ko nga tohu O_NOFOLLOW me O_DIRECTORY he Linux-he mea motuhake. Ka taea e tetahi te tautuhi i te macro _GNU_SOURCE hei tiki i o raatau korero.

Whakataunga

He maha nga korero i roto i te kawa e whai ana i te NFS, e whai paanga ana ki etahi o O_SYNC me O_NDELAY .

E whakarato ana a POSIX i nga rereke rereke e toru o te I / O i tukutahi, e pa ana ki nga tohu O_SYNC , O_DSYNC me O_RSYNC . I tenei wa (2.1.130) enei katoa kei raro i te Linux.