Ithute Linux Command Open

Lintlhakiso

#include << A HREF = "file: /usr/include/sys/types.h"> sys / types.h> # kenyeletsa << A HREF = "file: /usr/include/sys/stat.h"> sys / stat.h> # include << A HREF = "file: /usr/include/fcntl.h"> fcntl.h> int e bulehileng (const char * pathname , int flags ); int open (const char * pathname , int flags , mode_t mode ); ent creat (const char * pathname , mode_t mode );

Tlhaloso

Lenaneo le bulehileng la ( call ) la linux ( linux ) linux le sebelisoa ho fetola tsela e kenang ho file file descriptor (e leng lenane le lenyenyane le le seng le sa sebelisoang ho I / O e latelang le ho bala , ngola , joalo-joalo). Ha pitso e atleha, faele ea tlhaloso e khutliselitsoe ho ba faele e tlaase ka ho fetisisa e sa hlahisoang bakeng sa tshebetso. Pitso ena e etsa faele e ncha e bulehileng, e sa arolelanoang le mokhoa leha e le ofe o mong. (Empa ho arolelanoa lifaele tse bulehileng li ka hlaha ka mokhoa oa mocheso (2) oa fono.) Fasta e ncha e hlalosa ho lula e bulehile hohle mesebetsing (sheba fcntl (2)). Faelete ea offset e behoa qalong ea faele.

Melaoana ea maiketsetso ke e 'ngoe ea O_RDONLY , O_WRONLY kapa O_RDWR e kopa ho bula fono ho bala-feela, ngola feela-kapa ho bala / ngola, ka ho latellana, ka botebo- kapa ka ' d ka zero kapa tse ling tse latelang:

O_CREAT

Haeba file ha e eo e tla bōptjoa. Mong'a (user ID) ea faele e behiloe ho ID e sebetsang ea mosebetsing oa tshebetso. Boikarabello ba sehlopha (sekhetho sa sehlopha) se behiloe ho ID ea sehlopha se sebetsang kapa sa sehlopha sa sehlopha sa tataiso ea motsoali (ho itšetlehile ka mofuta oa tsamaiso ea tsamaiso le ho beha mekhoa ea ho khetha, le mokhoa oa tataiso ea motsoali, bona, mohlala, thaba mefuta ea bsdgroups le metsoako ea tsamaiso ea tsamaiso ea ext2, joalokaha ho hlalosoa thabeng (8)).

O_EXCL

Ha e sebelisitsoe le O_CREAT , haeba faele e ntse e le teng ke phoso 'me e bulehileng e tla hlōleha. Moelelong ona, ho na le kamano ea tšoantšetso, ho sa tsotellehe hore na lintlha tsa eona li hokae. O_EXCL e robehile holim'a lisebelisoa tsa faele tsa NFS , mananeo ao ho itšetlehileng ka 'ona bakeng sa ho etsa mesebetsi ea ho thibela e tla ba le boemo ba peiso. Tharollo ea ho etsa li-atomic file locking ka ho sebelisa lockfile ke ho etsa faele e ikhethang ka fs e tšoanang (mohlala, ho kenyelletsa lebitso la moeti le pid), sebelisa link (2) ho etsa khokahanyo le lockfile. Haeba link () e khutlela 0, lock e atleha. Ho seng joalo, sebelisa stat (2) lefapheng le ikhethang ho hlahloba hore na palo ea khokahano ea eona e eketsehile ho ea ho 2, ka nako eo mokotla o boetse oa atleha.

O_NOCTTY

Haeba tsela e boleloa e le sesebelisoa sa sesebelisoa --- bona tty (4) -e ke ke ea e-ba sesole sa ho laola esita le haeba ts'ebetso e se na eona.

O_TRUNC

Haeba faele e se e ntse e le teng 'me ke faele e tloaelehileng' me mokhoa o bulehileng o lumella ho ngola (ke hore, ke O_RDWR kapa O_WRONLY) e tla romeloa ho fihlela bolelele ba 0. Haeba faele ke faele ea FIFO kapa sesebelisoa sa sesebelisoa, letšoao la O_TRUNC le hlokomolohuoa. Ho seng joalo, phello ea O_TRUNC ha ea tsebahala. ( Liphetolelong tse ngata tsa Linux e tla hlokomolohuoa; ka liphetolelo tse ling, e tla khutlisa phoso.)

O_APPEND

Fera e buloa ka mokhoa oa append. Pele e mong le e mong a ngola , pointer ea faele e eme qetellong ea faele, joalokaha eka e na le lseek . O_APPEND e ka lebisa ho lifaele tse silafetseng ho tsamaiso ea faele ea NFS haeba mekhoa e fetang e le 'ngoe e fetisetsa data ho file ka nako e le' ngoe. Lebaka ke hore NFS ha e tšehetse ho kenya lifaelefouno, ka hona mochine oa kernel o lokela ho o etsisa, o ke keng oa etsoa ntle le peiso ea morabe.

O_NONBLOCK kapa O_NDELAY

Ha ho khoneha, faele e buloa ka mokhoa o sa thibele. Ha e bulehe kapa ts'ebetso leha e le efe e latelang e hlalosang feshene e khutlisetsoang ho tla etsa hore pitso ea ho letse e eme. Bakeng sa ho sebetsana le li-FIFO (tse bitsoang liphaephe), bona hape tse hlano (4). Mokhoa ona ha oa lokela ho ba le phello ho lifaele tse ling ntle le FIFOs.

O_SYNC

Fera e buletsoe bakeng sa I / O ea synchronous. Mangolo leha e le afe a ngotsoe ho file file e hlalosang e tla thibela mokhoa oa ho letsetsa ho fihlela data e ngotsoe kahare ho hardware ea motheo. Bona LITHUTO tse ka tlase, leha ho le joalo.

O_NOFOLLOW

Haeba tsela e nang le moelelo ke khokahanyo ea tšoantšetso, joale ho sitoa ho buleha. Ena ke kenyelletso ea FreeBSD, e ileng ea ekeletsoa Linux ka mokhoa oa 2.1.126. Litlhaloso tsa matšoao likarolong tse qalang tsa tsela e tla nkoa. Lihlooho tse tsoang ho glibc 2.0.100 le hamorao li kenyelletsa tlhaloso ea folakha ena; lisele pele 2.1.126 li tla hlokomoloha ha li sebelisoa .

O_DIRECTORY

Haeba tsela e se nang boitsebiso, etsa hore e bulehe. Le folakha ke ea Linux, 'me e kentsoe ka kernel version 2.1.126, e le ho qoba mathata a ho hana tšebeletso haeba opendir (3) e bitsoa fifo kapa thepa ea theipi, empa ha ea lokela ho sebelisoa ntle le ts'ebetsong ea opendir .

O_DIRECT

Leka ho fokotsa liphello tsa cache tsa I / O ho le ho tloha faeleng ena. Ka kakaretso sena se tla fokotsa tshebetso, empa se na le thuso maemong a ikhethang, joalo ka ha likopo li etsa liketso tsa tsona tsa kemiso. Fumana I / O e etsoa ka ho toba ho / ho tloha ho basebedisi ba sebaka. O / O ke synchronous, ke hore, qetellong ea pitso ea ho bala (2) kapa ea ngola (2), data e tiisitsoe hore e fetisitsoe. Matšoao a ho fetisa, le ho lumellana ha mochine oa mochine le ho hlakola offset kaofela e lokela ho ba li-multiples tsa boholo bo nang le mabitso a mokhoa oa faele.
Lelapa lena le tšehetsoa ka mekhoa e mengata ea Unix; tšehetso e ile ea kenngoa tlas'a Linux ka kernel version 2.4.10.
Sebopeho se ts'oanang sa sebopeho sa lisebelisoa tsa thibelo se hlalosoa ka tala (8).

O_ASYNC

Hlahisa pontšo (SIGIO ka ho feletseng, empa sena se ka fetoloa ka fcntl (2)) ha tlhahiso kapa phallo e ntse e ka khoneha ho hlalosa file ena. Tšobotsi ena e fumaneha feela bakeng sa li-terminals, li-terminals tsa maqheka, le li-sockets. Sheba fcntl (2) bakeng sa lintlha tse ling.

O_LARGEFILE

Lits'ebetsong tse 32-bit tse tšehetsang Tsamaiso e kholo ea Lifaele, lumella lifaele tseo boholo ba tsona bo sa khonngoeng ho emela li-bits tse 31 hore li bulehe.

Tse ling tsa lifolakha tse khethollang li ka fetoloa ho sebelisa fcntl ka mor'a hore faele e butsoe.

Mokhoa oa khang o hlakisa litumello tseo o ka li sebelisang haeba ho etsoa faele e ncha. E fetotsoe ke umask ea ts'ebetso ka tsela e tloaelehileng: litumello tsa faele e entsoeng ke (mode & ~ umask) . Hlokomela hore mokhoa ona o sebetsa feela ho fihlella nakong e tlang ea faele e sa tsoa bōptjoa; pitso e bulehileng e hlahisang file e baloang feela e ka boela ea khutlisa sebopeho sa faele sa ho bala / sa ngola.

Li-constants tse latelang tsa tšoantšetso li fuoa mokhoa :

S_IRWXU

User user 00700 (mofani oa feshene) o balile, o ngola le ho phethahatsa tumello

S_IRUSR (S_IREAD)

Moemeli oa 00400 o balile tumello

S_IWUSR (S_IWRITE)

Moemeli oa 00200 o na le tumello ea lengolo

S_IXUSR (S_IEXEC)

Motlatsi oa 00100 o phethile tumello

S_IRWXG

00070 sehlopha se balile, se ngola le ho phethahatsa tumello

S_IRGRP

00040 sehlopha se balile tumello

S_IWGRP

00020 sehlopha se na le tumello ea lengolo

S_IXGRP

00010 sehlopha se phethisa tumello

S_IRWXO

Ba bang ba 00007 ba balile, ba ngotse le ho phethahatsa tumello

S_IROTH

Ba bang ba 00004 ba balile tumello

S_OOTHO

Ba bang ba 00002 ba na le tumello ea ho ngola

S_IXOTH

Ba bang ba 00001 ba phethisitse tumello

mefuta e tlameha ho hlalositsoe ha O_CREAT e le lifolakha , 'me e hlokomolohuoa ka tsela e fapaneng.

ho bopa ho tšoana le ho buloa ka lifolakha tse lekanang le O_CREAT | O_WRONLY | O_TRUNC .

ETSA HORE U KHUTLELE

bula 'me u bōpe tlaleho e ncha, kapa -1 haeba phoso e etsahetse (tabeng eo, errno e behiloe ka nepo). Hlokomela hore e bulehileng e ka bula lisebelisoa tse khethehileng tsa lisebelisoa, empa pōpo e ke ke ea li bōpa - sebelisa mknod (2) ho e-na le hoo.

Linthong tsa faele tsa NFS tse nang le mapolesa a UID, ho bulehileng ho ka khutlisetsa moeletsi oa faele empa mohlala (2) likopo li haneloa ka EACCES . Lebaka ke hore mofani o bula ka ho hlahloba tumello, empa mapolesa a UID a etsoang ke seva ha ho etsoa likopo le ho ngola.

Haeba faele e sa tsoa bōptjoa, li-atime, li-ctime, masimo a lichelete li behiloe ho nako ea joale, 'me ho joalo le ka nako ea kemiso le mtime ea tataiso ea motsoali. Ho seng joalo, haeba faele e fetotsoe ka lebaka la folakha ea O_TRUNC, masimo a eona le nako ea ho lifa li behiloe ho nako ea hona joale.

Liphoso

EEXIST

tsela e se e ntse e le teng 'me O_CREAT le O_EXCL li sebelisitsoe.

EISDIR

tsela e bolelang moelelo le kopo e kenyelletsoang ho ngola (e leng, O_WRONLY kapa O_RDWR e behiloe).

EACCES

Ho kopa ho fumana faele ha hoa lumelloa, kapa e 'ngoe ea litlaleho tsa lebitso le ne le sa lumelle ho batla (ho etsa) tumello, kapa faele e ne e le sieo ebile e ngotse ho fihlella bukeng ea motsoali ha e lumelloe.

ENAMETOOLONG

tsela e ne e le telele haholo.

ETSA

O_CREAT ha e behe 'me fano e rehiloeng ha e eo. Kapa, ​​motsoako oa li- pathname ha o teng kapa ke khokahano ea tšoantšetso e tšosang.

ENOTDIR

Sehlooho se sebelisoang e le lenane la pathname ha se, ha e le hantle, se ngotsoe , kapa O_DIRECTORY se boletsoeng 'me lebitso la tsela e ne e se lenaneo.

ENXIO

O_NONBLOCK | O_WRONLY e behiloe, file e rehiloeng ke FIFO 'me ha ho mokhoa o nang le file e bulehileng bakeng sa ho bala. Kapa, ​​faele ke faele e khethehileng ea sesebelisoa mme ha ho na sesebelisoa se tsamaisang.

ENODEV

pathname e bua ka sesebelisoa se ikhethileng mme ha ho sesebelisoa se tsamaisanang le sona. (Ena ke bug ea Linner kernel - boemong bona ENXIO e tlameha ho khutlisetsoa.)

EROFS

pathname e bua ka faele e hlahang tsamaisong ea tsamaiso feela le ho ngolloa ho ngolloa.

ETXTBSY

pathname e bolela setšoantšo se sebetsang seo hona joale se ntseng se sebetsoa le ho ngolisoa se fumanehang.

EFAULT

litsela tse tsamaeang ka ntle ho sebaka sa hau sa aterese.

ELOOP

Likhokahanyo tse ngata tsa tšoantšetso li ile tsa kopana le ho rarolla tsela , kapa O_NOFOLLOW e boletsoeng empa lebitso la tsela e ne e le khokahanyo ea tšoantšetso.

ENOSPC

tsela e ne e lokela ho bōptjoa empa sesebelisoa se nang le pathname ha se na sebaka sa file e ncha.

ENOMEM

Khopotso e sa lekaneng ea kernel e ne e fumaneha.

EMFILE

Tshebetso e se e na le palo e kholo ea lifaele tse butsoeng.

ENFILE

Tekanyo ea palo eohle ea lifaele tse bulehileng tsamaisong e fihlile.

E lumellana le

SVr4, SVID, POSIX, X / OPEN, BSD 4.3 Lipapaka tsa O_NOFOLLOW le O_DIRECTORY ke Linux-tse khethehileng. E mong a ka 'na a tlameha ho hlalosa _GNU_SOURCE macro ho fumana litlhaloso tsa bona.

Lithibelo

Ho na le mefokolo e mengata ea protocol e thehiloeng ho NFS, e amang har'a O_SYNC le O_NDELAY .

POSIX e fana ka mefuta e meraro e sa tšoaneng ea I / O e lumellanang, e tsamaellanang le lifolakha O_SYNC , O_DSYNC le O_RSYNC . Hona joale (2.1.130) tsena kaofela li tšoana le tlas'a Linux.