E aʻo i ka wehewehe o Linux

Hōʻuluʻulu

Loaʻa i ka << A HREF = "file: /usr/include/sys/types.h"> sys / types.h> #e hoʻokau i << A HREF = "file: /usr/include/sys/stat.h"> sys / stat.h> #e hoʻokau i ka << A HREF = "file: /usr/include/fcntl.h"> fcntl.h> open open (const char * pathname , nā pū'ā lele ); i komo (const char * pathname , i loko o nā hae , mode mode ); hana i (const char * pathname , mode mode );

Hōʻike

Ke hoʻohanaʻia nei ka'ōlelo leka uila ( leka ) e hoʻohuli i kahi pathname i loko o ka palapala kuhikuhi kōnae (kahi liʻiliʻiʻole,ʻaʻohe helu ponoʻole no ka hoʻohanaʻana i ka mea e like me ka heluhelu , kākau , a pēlā aku). Ke holomua ka pika, ua hoʻihoʻi ka mea kākau kikokikona i wil i lalo i ka weheweheʻana i nā mea kākau palapala haʻahaʻa. Hoʻokumu kēia kipa i kahi leka uila hou,ʻaʻole i hoʻokaʻawaleʻia i kekahi hana'ē aʻe. (Ma ka weheʻana i nā waihona open e hiki mai paha ma ka pūnaewele kīpoki (2). Ua hoʻonohonohoʻia ka mea kākau kikokikona hou e noho ākea i nā hana hoʻokō (e nānā i ka fcntl (2)). Hoʻonohonohoʻia ka hoʻoponopono kōnae i ka hoʻomakaʻana o ka pūnaewele.

ʻO nā leki hoʻohālike kekahi o O_RDONLY , O_WRONLY a iʻole'O_RDWR nāna e noi e wehe i ka faila i ka heluhelu waleʻia, kākau-wale a heluhelu paha, i kēlā me kēia, bitwise- ai ' ole me ka zeʻole aʻoi paha o kēia mau mea:

O_CREAT

Ināʻaʻohe kōnae e hakuʻia. Ua hoʻonohonohoʻia ka mea hoʻohana (ka mea hoʻohana inoa) o ka pūnaewele i ka ID hoʻohana pono o ka hana. Ua hoʻonohonohoʻia ka mana o ka hui (ID group) a i ka lālā o kaʻenehana kūpono o ka papahana aiʻole i kaʻaoʻaoʻo ka papa helu papa (e pili ana i nāʻano pūnaewele a me nā koho mauna, a me keʻano o ka papa kuhikuhi papa, e nānā, e like me ka mauna nā bsdgroups a me nā sysvgroups o ke systemystem ext2, e like me ia i ho'ākākaʻia ma ka mauna (8)).

O_EXCL

Ke hoʻohanaʻia me'O_CREAT , inā i kū kahi kōnae, he hewa ia aʻaʻole e hāʻule ka wehe . Ma kēiaʻano, aia kahi hōʻailona hōʻailona, ​​me ka nānāʻole i kahi o kona mau helu i. Hoʻopiʻiʻiaʻo O_EXCL i nā pūnaewele pūnaewele NFS , nā papahana e hilinaʻi ana i ia no ka hanaʻana i nā hana loka i ka pahu hopu. ʻO ka hopena no ka hanaʻana i kahi'ōnaekekile loke e hoʻohana ana i kahi lakapila ka hanaʻana i kahi faila kūikawā ma ka fs hoʻokahi (e like me ka hoʻokomoʻana i ka inoa inoa a me ka pid), e hoʻohana i ka loulou (2) e hana i kahi loulou i ka lockfile. Inā hoʻokuʻuʻia () hoʻi i ka 0, ua lanakila ka laka. Ināʻole, e hoʻohana i ke stat (2) ma ka pūnaewele hoʻokahi e nānā inā ua piʻi kona helu pūnaewele i ka 2, a laila ua holomua ka laka.

O_NOCTTY

Inā pili ka pathname i kahi pūnaewele kūlana - e nānā i ka tty (4) -ʻaʻole ia e lilo i ka mana o ka hoʻoponoponoʻana i ka pahu keʻole kahi'ōnaehana.

O_TRUNC

Inā aia ka waihona a he waihona maʻamau aʻo ke ala hāmama e hiki i ka palapala (ie, O_RDWR a iʻole O_WRONLY) e hoʻonuiʻia i ka lōʻihi 0. Inā he file FIFO a kōnae pūnaewele paha ka file,ʻaʻole i mālamaʻia ka hae O_TRUNC. Ināʻole,ʻaʻole i ho'ākākaʻia ka hopena o O_TRUNC. (Ma nāʻano Linux he nui ka nānāʻiaʻana; ma nāʻano'ē aʻe, e hoʻihoʻiʻia mai kekahi hapa.)

O_APPEND

Hoʻokomoʻia ka faila ma keʻano hoʻohui. Ma mua o kēlā me kēia kākauʻana , hoʻonohonohoʻia ka poʻomanaʻo kōnae ma ka hopena o ka pūnaewele, me he mea lā me ka lseek . Hiki paha iā O_APPEND ke alakaʻi i nā faila hewa i nā pūnaewele pūnaewele NFS ināʻoi aku ka nui o nāʻikepili i kahi faila i ka manawa hoʻokahi. Loaʻa kēia no ka meaʻaʻole i kākoʻoʻo NFS i ka hoʻohuiʻana i kahi faile, no laila e hoʻopiliʻia e ka kernel client, hikiʻole ke hana me kaʻaʻaʻole.

O_NONBLOCK a iʻole'O_NDELAY

Inā hiki, hiki ke weheʻia ka faila i kahi hana pāʻole. ʻAʻole nō hoʻi ka hana hāmama a iʻole nā ​​hana ma hope aʻe o ka mea nāna i waiho i ka palapala inoa e kali. No ka mālamaʻana i nā FIFO (kapa inoa paipu), eʻike pū i ka fifo (4). ʻAʻole pono kēiaʻano i ka hopena ma nāʻili'ē aʻe ma mua o FIFOs.

O_SYNC

Hoʻokuʻuʻia ka waihona no ka I / O pūnaewele. Hiki i kēlā me kēia kākauʻana ma ka waihona pepa waihona hua'ōlelo e kāpae i ke kaʻina hana a hiki i ka kākauʻana o kaʻikepili i ka lako waiwai. E nānā i ka RESTRICTIONS ma lalo, akā.

O_NOFOLLOW

Ināʻo ka pathname ka hōʻailona hōʻailona, ​​alaʻole ka wehe. ʻO kēia ka FreeBSD extension, i hoʻokomoʻia i Linux ma ka 2.1.126. ʻO nā loulou pili i nā papa mua o ke pathname e hahaiʻia. ʻO nā poʻomanaʻo mai glibc 2.0.100 a ma hope aku e komo ka ho'ākākaʻana o kēia hae; nā kernels ma mua o 2.1.126 e nānāʻole ia inā hoʻohanaʻia .

O_DIRECTORY

Ināʻaʻohe kuhikuhi o ka pathʻole , e hoʻokahe i ka weheʻana i kaʻole. ʻO kēia hae he Linux-kiko'ī, a ua hoʻokomoʻia i loko o ka'ōnaehana 2.1-1126, e pale i nā pilikia hōʻoleʻole ke kohoʻia ka opendir (3) i kahi pūnaewele FIFO a iʻole e paʻiʻia, akāʻaʻole pono e hoʻohanaʻia ma waho o ka hoʻokōʻana i ka opendir .

O_DIRECT

E ho'āʻo e hoʻohaʻahaʻa i nā hopena o nā hua'ōlelo I / O i kēia a me kēia. Ma ke 'ano e hōʻemi ana kēia i ka hana, akā, he kūpono ia i nā kūlana kūikawā, e like me ka hoʻohanaʻana o nā hana i kā lākou iho iho. Hoʻopuka pololeiʻiaʻo I / O i / mai nā mea hoʻolālā manawa hoʻohana. Hoʻohuiʻiaʻo I / O,ʻo ia hoʻi, ma ka pauʻana o ka heluhelu (2) a iʻole ke kākau (2) pūnaewele, pono e hoʻololiʻia kaʻike. ʻO nā lālā hoʻololi, a me ka hoʻonohonohoʻana o ka mea hoʻopuka hoʻohana a me ka hoʻopauʻana i nā hoʻopiliʻana, he mau helu likeʻole ka nui o ka pūnaewele pūnaewele.
Ke kākoʻo nei kēia hae i kahi mau pūnaewele Unix like; ua kākoʻoʻia ke kākoʻo ma lalo o Linux ma ka'ōkuia 2.4.10.
Hoʻohālikelikeʻia kahiʻokoʻa likeʻana e like me keʻano maʻamau e like me keʻano maʻamau.

O_ASYNC

E hana i kahi hōʻailona (SIGIO i ka paʻakikī, akā hiki ke hoʻololiʻia kēia ma o fcntl (2)) i ka hikiʻana o ka hoʻokomo a iʻole ka puka ma kēia palapala kuhikuhi kōnae. ʻO kēia hiʻohiʻona ka mea i loaʻa wale no nā pūnaehana, nā pūnaewele pūnaewele, a me nā kumu. E nānā i ka fcntl (2) no nā kiko kiko'ī.

O_LARGEFILE

Ma nā pūnae 32-bit e kākoʻo ana i ka Pūnaewele Pūnaewele nui, eʻae i nā waihona i hikiʻole ke paniʻia nā nui ma 31 mau kikowaena e weheʻia.

Hiki ke hoʻololiʻia kekahi o kēia mau hae leʻaleʻa ma ka hoʻohanaʻana i ka fcntl ma hope o ka weheʻiaʻana o ka faila.

Hōʻike ka manaʻo hoʻonāuki i nāʻae e hoʻohana ai i ka hoʻopukaʻiaʻana o kahi faili hou. Hoʻoponoponoʻia e ke kaʻina o ka hana ma keʻano maʻamau:ʻo nāʻaeʻana o ka waihona i hanaʻia ((mode & ~ umask) . E hoʻomaopopo i kēia hana wale nō e pili ana i nā mea e hiki mai ana o kēia'ōnaehana hou; hiki i ka leka uila e hana i kahi pūnaewele heluhelu wale nō ke hoʻihoʻi i ka mea heluhelu heluhelu a kākau paha.

Hoʻokomoʻia nā constants o nā hiʻohiʻona i kēia no keʻano :

S_IRWXU

Ua heluhelu ka mea hoʻohana (faile file) 00700, kākau a hoʻopaʻa i kaʻae

S_IRUSR (S_IREAD)

00400 hoʻohana ka mea hoʻohana i kaʻaeʻana

S_IWUSR (S_IWRITE)

00200 hoʻohana ka mea hoʻohana i kaʻaeʻana

S_IXUSR (S_IEXEC)

Ua hana ka mea hoʻohana i ka mana

S_IRWXG

Ua heluhelu ka huihelu 00070, kākau a hoʻokomo i kaʻae

S_IRGRP

Ua heluhelu ka 100040 i kaʻae

S_IWGRP

Aia nā'āpana'ākau he 1,00020

S_IXGRP

Ua hoʻokauʻia kaʻahahui 10,00010

S_IRWXO

00007 ua heluhelu kekahi, e kākau a hoʻokomo i kaʻae

S_IROTH

00004 ua heluhelu kekahi i kaʻae

S_IWOTH

00002 mau mea'ē aʻe i kaʻaeʻana

S_IXOTH

00001 ua hana kekahi i kaʻae

pono e hoʻonohonoho ponoʻia ka maʻamau i ka manawa o'O_CREAT i loko o nā hae , aʻaʻole mālamaʻia i kekahi.

hanaʻia ka hanana e hāmama me nā hae e like me'O_CREAT | O_WRONLY | O_TRUNC .

KA HOʻOPI HUI

wehe a ho'āʻo hoʻi e hoʻihoʻi i ka mea wehewehe pepa hou, aiʻole -1 ināʻikeʻia kahi kuhi (i kēlā manawa, hoʻonohonoho ponoʻiaʻo errno pololei). Eʻike i ka weheʻana o ka weheʻana i nā pūnaeweleʻoihana pūnaewele, akā hikiʻole ke hana iā lākou - hoʻohana i ke kaupona (2) ma kahi.

Ma nā pūnaewele pūnaewele NFS me ka UID palapala i hoʻololiʻia, hiki iāʻoe ke hoʻihoʻi i ka leka uila akā no ka heluheluʻana i nā noi (2) me ka EACCES . ʻO kēia ke kumu no ka hoʻomakaʻana o ka mea kūʻai ma ka nānāʻana i nāʻaeʻana, akāʻo ka paʻi UID ke hanaʻia e ka mea ma luna o ka heluhelu a kākau i nā noi.

Inā hoʻokumu houʻia ka faile, ua hoʻonohonohoʻia kāna manawa, ctime, nā manawa mime i ka manawa manawa, a pēlā nō nā manawa manawa a me nā manawa o ka papa helu papa. Ināʻole, inā hoʻololiʻia ka faila ma muli o ka hae'O_TRUNC, ua hoʻonohonohoʻia kona manawa manawa a me ka manawa manawa manawa i ka manawa manawa.

Nā Haʻia

EEXIST

Loaʻa ka pathname a ua hoʻohanaʻiaʻo O_CREAT a me'O_EXCL .

EISDIR

kuhikuhi ka inoaʻana i kahi papa kuhikuhi a me ka mea i noiʻia e kākauʻia (ʻo ia hoʻi, O_WRONLY a iʻole'O_RDWR i hoʻonohonohoʻia).

EACCES

ʻAʻole iʻaeʻia kaʻaeʻana o kaʻaeʻana i ka faile,ʻaʻole iʻaeʻia kekahi o nā papa kuhikuhi ma ke trackname i ka huli (hoʻopaʻa) i kaʻaeʻana,ʻaʻohe paha ka waihona i kēia manawa aʻaʻole eʻae i ke kākauʻana i ka papa helu papa.

ENAMETOOLONG

Loaʻa loa ka pathname .

HOʻOLO

ʻAʻole i hoʻonohonohoʻiaʻo O_CREAT aʻaʻole i laila ka waihona inoa. A iʻole,ʻaʻole i kahi kahi papa kuhikuhi ma ka inoa inoa a iʻoleʻo ia kahi loulou hōʻailona pili.

Hoʻoponopono

ʻO ka mea i hoʻohanaʻia e like me ke kuhikuhiʻana i ka inoa inoaʻaʻole i, i kaʻoiaʻiʻo, ua kuhikuhiʻia ka papa kuhikuhi, a iʻole'O_DIRECTORY aʻo ka inoa inoaʻaʻole ia he papa kuhikuhi.

ENXIO

KANAKA | Ua hoʻonohonohoʻiaʻo O_WRONLY,ʻo ka inoa i kapaʻiaʻo FIFO aʻaʻohe puka i hoʻomakaʻia e heluhelu. A iʻole,ʻo ka faila he pūnaehanaʻoihana ia aʻaʻohe pūnaewele like.

ENODEV

inoa inoa e pili ana i kahi failaʻoihana aʻaʻohe pūnaewele pili like. (ʻO kēia ke kikoo no ka Linux Linux - ma kēia kūlana e hoʻihoʻiʻia ka ENXIO.)

Nā Kuki

inoa inoa e pili ana i kahi faila ma kahi pūnaewele pūnaewele wale nō i kākauʻia a noiʻia.

ETXTBSY

inoa inoa e pili ana i kahi kiʻi i hoʻopukaʻia e hanaʻia nei a kākauʻia ka noi i noiʻia.

EFAULT

nā inoa pathname ma waho o kāu wahi kūlana kūpono.

ELOOP

Ua loaʻa nāʻokoʻa o nā kaha i ka hoʻoholoʻana i kahi trackname , a iʻoleʻo'O_NOFOLLOW i'ōleloʻia akāʻo ka pathname ka hōʻailona hōʻailona.

ENOSPC

e hoʻokumuʻia ka pathname akāʻo ka mea i loaʻa kahi inoaʻaʻole kahi pani no ka'ōnaehana hou.

ENOMEM

Loaʻa ka hoʻomaopopoʻana o ka noʻonoʻo aʻa.

EMFILE

Loaʻa ka papa hana i ka helu kuhi o nā faila.

KANAKA

Uaʻaeʻia ka palena o ka huina helu o nā faila i hāmamaʻia ma ka pūnaewele.

E like me

SVr4, SVID, POSIX, X / OPEN, BSD 4.3ʻO nā pae'O_N_NOLLOW a me'O_DIRECTORY he Linux-ke kikooho. Hiki i kekahi ke ho'ākāka i ka macroʻo GNU_SOURCE e loaʻa i ko lākou mau wehewehe.

Nā palena

Nui nā pilikia i loko o ka protocol i lalo o NFS, e pili ana i waena o'O_SYNC a me'O_NDELAY .

POSIX e hāʻawi ana iʻekolu mauʻano likeʻole o ka I / O pūnaewele, e like me nā hae O_SYNC ,' O_DSYNC , a me O_RSYNC . I kēia manawa (2.1.130) eia nā mea like ma lalo o Linux.