Achoimre
#include << A HREF = "comhad: /usr/include/sys/types.h"> sys / types.h> #include << A HREF = "file: /usr/include/sys/stat.h"> sys / stat.h> #include << A HREF = "comhad: /usr/include/fcntl.h"> fcntl.h> int open (const char * pathname , int brat ); int oscailte (const char * pathname , int brat , modh mode_t ); int cruthaithe (const char * pathname, mode mode );Cur síos
Úsáidtear an t-ordú linux ( córas ) oscailte ( córas ) chun ainm cosanta a thiontú ina thuairisceoir comhad (slánuimhir neamhdhiúltach beag le húsáid in I / O ina dhiaidh sin mar a léamh , a scríobh , etc.). Nuair a bheidh an glao rathúil, is é an tuairisceoir comhad a d'fhill an tuairisceoir comhaid is ísle nach bhfuil oscailte don phróiseas faoi láthair. Cruthaíonn an glaoch comhad nua oscailte, gan a roinnt le próiseas ar bith eile. (Ach d'fhéadfadh comhaid oscailte roinnte a bheith ann trí ghlaoch an chórais fork (2).) Tá an tuairiscí nua comhad leagtha amach go fóill ar fheidhmeanna exec (féach fcntl (2)). Tá an comhad a fhritháireamh leagtha síos ag tús an chomhaid.
Tá na bratacha paraiméadar ar cheann de O_RDONLY , O_WRONLY nó O_RDWR a iarrann an comhad a oscailt le léamh amháin, scríobh-amháin nó léamh / scríobh, faoi seach, giotán- nó 'd le nialas nó níos mó díobh seo a leanas:
O_CREAT
Mura bhfuil an comhad ann, cruthaítear é. Socraítear an t-úinéir (ID úsáideora) an chomhaid ar an ID úsáideora éifeachtach ar an bpróiseas. Socraítear úinéireacht an ghrúpa (ID ghrúpa) ar ghrúpa ID éifeachtach an phróisis nó d'ainm ghrúpa an eolaire tuismitheoir (ag brath ar chineál an chórais chomhaid agus na roghanna mount, agus modh an eolaire tuismitheora, féach, eg, an mount roghanna bsdgroups agus sysvgroups den chóras comhaid ext2, mar a thuairiscítear i mount (8)).
O_EXCL
Nuair a úsáidtear sé le O_CREAT , má tá an comhad ann cheana féin, is earráid é agus mainneoidh an oscailt . Sa chomhthéacs seo, tá nasc siombalach ann, is cuma cén áit a mbaineann sé. Tá O_EXCL briste ar chórais comhaid NFS , beidh coinníoll cine ag cláir a bhfuil sé ag brath air chun tascanna glasála a dhéanamh. Is é an réiteach chun glasáil comhaid adamhach a dhéanamh ag baint úsáide as glaschomhad ná comhad uathúil a chruthú ar an bhfscríbhinn céanna (m.sh., lena n-áirítear ainm óstach agus pid), nasc a úsáid (2) chun nasc a dhéanamh leis an ghlaschló. Má thagann nasc () ar ais 0, rachaidh an glas ar rath. Seachas sin, bain úsáid as stat (2) ar an gcomhad uathúil chun a sheiceáil an bhfuil a líon naisc ag méadú go dtí 2, agus sa chás sin rathúil an glas.
O_NOCTTY
Má thagraíonn an t- ainm cosanta le gléas críochfoirt --- féach tty (4) --- ní bheidh sé mar chríochfort rialaithe an phróisis fiú mura bhfuil ceann amháin ag an bpróiseas.
O_TRUNC
Má tá an comhad ann cheana agus is comhad rialta é agus is féidir leis an mód oscailte scríobh (is é sin, O_RDWR nó O_WRONLY) beidh sé teasctha go dtí fad 0. Más comhad FIFO nó gléas críochfoirt é an comhad, déantar neamhaird ar bhratach O_TRUNC. Seachas sin, tá éifeacht O_TRUNC neamhshonraithe. (Ar go leor leaganacha Linux ní dhéanfar neamhaird air; ar leaganacha eile, cuirfidh sé earráid ar ais.)
O_APPEND
Osclaítear an comhad sa mód aguisín. Sula ngach scríobh , tá pointeoir an chomhaid suite ag deireadh an chomhaid, amhail is dá mba le lseek . D' fhéadfadh O_APPEND comhaid truaillithe a bheith ann ar chórais comhad NFS má chuireann níos mó ná próiseas amháin sonraí ar fáil chuig comhad ag an am céanna. Tá sé seo toisc nach dtacaíonn NFS le comhad a chur ar fáil, mar sin ní mór don eithne cliant a insamhail, nach féidir a dhéanamh gan riocht cine.
O_NONBLOCK nó O_NDELAY
Nuair is féidir é, osclaítear an comhad i mód neamh-blocála. Ní chuirfidh na hoibríochtaí oscailte ná aon oibríochtaí ina dhiaidh sin ar an tuairisceoir comhad a chuirtear ar ais ina chúis leis an bpróiseas glaonna fanacht. Chun láimhseáil FIFO (píopaí ainmnithe), féach freisin fifo (4). Ní gá go mbeadh aon éifeacht ag an mód seo ar chomhaid seachas FIFOanna.
O_SYNC
Osclaítear an comhad le haghaidh I / O sioncrónna. Cuirfidh aon scríobh ar an tuairisceoir comhad a eascraíonn as an bpróiseas glaonna go dtí go mbeidh na sonraí scríofa go fisiciúil ar na crua-earraí bunúsacha. Féach SRIANNA thíos, áfach.
O LEANAÍ
Más nasc siombalach é an cosán, ansin mainneoidh an oscailt. Is síneadh FreeBSD é seo, a cuireadh le Linux i leagan 2.1.126. Leanfar le naisc shimpliúla i gcomhpháirteanna níos luaithe den chonainm. Cuimsíonn na ceannteidil ó glibc 2.0.100 agus níos déanaí sainmhíniú ar an bratach seo; ní dhéanfaidh kernels roimh 2.1.126 neamhaird air má úsáidtear é .
O_DIRECTORY
Mura bhfuil comhadainm mar chomhadlann, cuir an teip ar oscailt. Tá an bratach seo ar Linux-sonrach, agus cuireadh leis an leagan 2.1.126 eiseamláir, chun fadhbanna diúltú seirbhíse a sheachaint má iarrtar ar opendir (3) ar fheiste FIFO nó téip, ach níor cheart é a úsáid lasmuigh de chur i bhfeidhm an opendir .
O_DIRECT
Déan iarracht éifeachtaí taisce an I / O a íoslaghdú go dtí agus ón gcomhad seo. Go ginearálta, díghrádóidh sé feidhmíocht, ach tá sé úsáideach i gcásanna speisialta, mar shampla nuair a dhéanann na hiarratais a gcuid caching féin. Comhad Déantar I / O go díreach chuig / ó mhaoláin spáis úsáideora. Tá an I / O sioncrónach, is é sin, nuair a bheidh an glao córas á léamh (2) nó scríobh (2) críochnaithe, déantar sonraí a ráthaíodh go n-aistríodh iad. Ní mór go mbeadh méideanna aistrithe, agus ailíniú maolán úsáideora agus comhaid a fhritháireamh, iolraithe ar mhéid bloc loighciúil an chórais comhaid.
Tugtar tacaíocht don bhratach seo ar roinnt córais cosúil le Unix; Cuireadh tacaíocht faoi Linux i gcroílár leagan 2.4.10.
Déantar cur síos ar chomhéadan leathláithchéiseach do ghléasanna bloc in amh (8).
O_ASYNC
Comhartha a ghiniúint (SIGIO de réir réamhshocraithe, ach is féidir é seo a athrú trí fcntl (2)) nuair is féidir ionchur nó aschur a dhéanamh ar an tuairisceoir seo. Níl an gné seo ar fáil ach amháin le haghaidh críochfoirt, pseudo-críochfoirt, agus soicéid. Féach fcntl (2) le haghaidh tuilleadh sonraí.
O_LARGEFILE
Ar chórais 32-giotán a thacaíonn leis an gCóras Comhaid Móra, lig comhaid nach féidir a mhéid a léiriú i 31 giotán atá le hoscailt.
Is féidir cuid de na bratacha roghnacha seo a athrú ag baint úsáide as fcntl tar éis don chomhad a oscailt.
Sonraíonn an modh argóint na ceadanna le húsáid i gcás go gcruthófar comhad nua. Déantar é a mhodhnú ag umask an phróisis sa ghnáthbhealach: is iad ceadanna an chomhaid chruthaithe (modh & ~ umask) . Tabhair faoi deara nach mbaineann an modh seo ach le rochtainí an chomhaid nua-chruthaithe amach anseo; féadfaidh an glao ar oscailt a chruthaíonn comhad léite amháin tuairisceán comhad a léamh / a scríobh.
Cuirtear na sraitheanna siombalacha seo a leanas ar fáil do mhodh :
S_IRWXU
Tá úsáideoir 00700 (úinéir an chomhaid) cead a léamh, a scríobh agus a fhorghníomhú
S_IRUSR (S_IREAD)
Tá cead léite ag úsáideoir 00400
S_IWUSR (S_IWRITE)
Tá cead scríofa ag úsáideoir 00200
S_IXUSR (S_IEXEC)
Tá úsáideoir 00100 cead a fhorghníomhú
S_IRWXG
Tá grúpa 00070 tar éis cead a léamh, a scríobh agus a fhorghníomhú
S_IRGRP
Tá cead léite ag grúpa 00040
S_IWGRP
Tá cead scríofa ag grúpa 00020
S_IXGRP
Tá grúpa 00010 cead a fhorghníomhú
S_IRWXO
00007 tá daoine eile tar éis cead a léamh, a scríobh agus a fhorghníomhú
S_IROTH
Tá cead léithe ag daoine eile 00004
S_IWOTH
Tá cead scríofa ag 00002 eile
S_IXTH
00001 Tá cead ag daoine eile a fhorghníomhú
Ní mór an modh a shonrú nuair a bhíonn O_CREAT sna bratacha , agus déantar neamhaird a dhéanamh air ar shlí eile.
is ionann an creat agus an bratach a bheith cothrom le O_CREAT | O_WRONLY | O_TRUNC .
FUILIMH LUACH
tuairisceoir nua an chomhaid a aisghairm agus a chruthú , nó má tharla earráid (sa chás sin, socraítear errno go cuí). Tabhair faoi deara gur féidir oscailte comhaid speisialta gléas a oscailt, ach ní féidir iad a chruthú - úsáid mknod (2) ina ionad sin.
Ar chórais comhaid NFS le cumas mapála UID, féadfaidh sé tuairisceoir comhad a fhilleadh ar ais ach m.sh. diúltaítear le hiarratais ar léamh (2) le EACCES . Tá sé seo toisc go n-oibríonn an cliant oscailte trí na ceadanna a sheiceáil, ach déanann an freastalaí mapáil UID ar iarratais a léamh agus a scríobh.
Má tá an comhad nua-chruthaithe, tá a réimsí atime, ctime, mtime leagtha síos don am atá ann faoi láthair, agus mar sin tá na réimsí ctime agus mtime den eolaire tuismitheoir. Seachas sin, má dhéantar an comhad a mhodhnú mar gheall ar bhratach O_TRUNC, tá a réimsí ctime agus mtime leagtha síos don am atá ann faoi láthair.
Earráidí
EEXIST
tá luíainm ann cheana agus baineadh úsáid as O_CREAT agus O_EXCL .
EISDIR
Tagraíonn an luíainm eolaire agus cuirtear an rochtain a d'iarr scríbhneoireacht i gceist (is é sin, O_WRONLY nó O_RDWR ).
EACCES
Ní cheadaítear an rochtain a iarrtar ar an gcomhad, nó níor cheadaigh ceann de na heolairí ar an gcosainm cead cuardaigh (forghníomhú), nó ní raibh an comhad ann fós agus níl cead ag scríobh rochtain ar an eolaire tuismitheoir.
ENAMETOOLONG
bhí an t- ainm luatha ró-fhada.
ENOENT
Níl O_CREAT leagtha síos agus níl an comhad ainmnithe ann. Nó, níl comhad eolaire sa luíainm ann nó is nasc siombalach atá i mbaol ann.
ENOTDIR
Ní dhéantar comhad a úsáideadh mar chomhadlann sa ainm cosanta , go deimhin, go raibh eolaire, nó O_DIRECTORY sonraithe, agus ní comhadlann an t- ainm cosán .
ENXIO
O_NONBLOCK | Socraítear O_WRONLY, is FIFO an comhad ainmnithe agus níl an próiseas ar oscailt le haghaidh léitheoireachta. Nó, is comhad speisialta gléas é an comhad agus níl aon fheiste comhfhreagrach ann.
ENODEV
Tagraíonn an luíainm comhad speisialta gléas agus níl aon fheiste comhfhreagrach ann. (Is éard atá ann le fabhtcheangail Linux - sa chás seo ní mór ENXIO a thabhairt ar ais.)
EROFS
Tagraíonn an t- ainmainm comhad ar chóras comhaid léite amháin agus iarradh ar rochtain a scríobh.
ETXTBSY
Tagraíonn an luíainm d'íomhá inrite atá á fheidhmiú faoi láthair agus d'iarr rochtain ar scríobh.
EFAULT
pointí cosáin taobh amuigh de do spás seoladh inrochtana.
ELOOP
Rinneadh iomarca naisc siombalach le linn réitigh a luadh , nó bhí O_NOFOLLOW sonraithe ach gur nasc siombalach é an t-ainm.
ENOSPC
níorbh fhéidir an t-ainmneacha a chruthú ach níl aon seomra ann leis an gclós ina bhfuil an comhad nua.
ENOMEM
Ní raibh cuimhne neamhleor ann ar fáil.
FÉIDIR
Tá an líon uasta comhaid ar oscailt cheana féin.
FREAGRA
Tá an teorainn ar líon iomlán na gcomhad atá oscailte ar an gcóras bainte amach.
Ag cloí leis
SVr4, SVID, POSIX, X / OPEN, BSD 4.3 Tá na bratacha O_NOFOLLOW agus O_DIRECTORY Linux -specific. D'fhéadfadh go mbeadh ort macra _GNU_SOURCE a shainmhíniú chun a gcuid sainmhínithe a fháil.
Srianta
Tá go leor míshásta sa phrótacal atá mar bhunús den NFS, a dhéanann difear do dhaoine eile O_SYNC agus O_NDELAY .
Soláthraíonn POSIX trí leagan éagsúil de I / O sioncronaithe, a fhreagraíonn do na bratacha O_SYNC , O_DSYNC agus O_RSYNC . Faoi láthair (2.1.130) tá gach ceann acu sin comhchiallaigh faoi Linux.