Dzidzai Linux Command Open

Zvinyorwa

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

Tsanangudzo

Inoshandiswa () system call call linux murairo inoshandiswa kuchinja nzira inopinda mu file descriptor (duku, isina integer inoshandiswa kuti ishandiswe muI / O inotevera seyokuverenga , kunyora , etc.). Apo foni yacho iri kubudirira, faira anorondedzerwa akadzoka wil ive yakaderera faira descriptor kwete ikozvino yakasununguka kuti iite. Iyi foni inogadzira faira itsva yakazaruka, isina kugoverwa chero imwe nzira. (Asi yakagoverwa mafaira akazaruka angasimuka neforikiti (2) system call.) Itafura yefridhi descriptor inogadzirirwa kuramba yakasununguka pane mabasa (ona fcntl (2)). Iyo faira offset inotanga kusvika pakutanga kwefaira.

Mipiramu yemapuranga ndeimwe yeO_RDONLY , O_WRONLY kana O_RDWR inokumbira kuzarura faira kuverenga-chete, kunyora-chete kana kuverenga / kunyora, zvakananga, bitwise- kana kuti d kana zero kana zvimwe zvinotevera:

O_CREAT

Kana iyo faira isipo iyo ichasikwa. Muridzi (user ID) yefaira yakagadzirirwa kuIndaneti yakashanda yehutano. Nhengo yeboka (boka reIndaneti) rinogadzirirwa kuIndaneti yebato rinobudirira yehutano kana kuIki yeboka yehurongwa hwevabereki (zvichienderana nehuwandu hwemafaira ehurumende uye kusarudza zvingasarudzwa, uye nzira yemutauro wemubereki, ona, kureva, gomo zvisarudzo bsdgroups nemasangano emitambo yeex2 , sezvinotsanangurwa mugomo (8)).

O_EXCL

Kana yakashandiswa naO_CREAT , kana faira iripo iko iko kukanganisa uye yakazaruka ichakundikana. Muchirevo ichi, chiratidzo chekufananidzira chiripo, pasinei nokuti inotaridzirwa kupi. O_EXCL yakaputsika paNFS mafaira , mapurogiramu anovimba naro kuita mabasa ekuvhara achava nemamiriro ekumhanya. Mhinduro yekuita maatomu ekuvhara mafaira achishandisa lockfile ndeyokuumba faira yakasiyana-siyana pane zvakafanana f (semuenzaniso, kusanganisira muzita remusangano uye pid), shandisa chibatanidza (2) kuita chibatanidzo kune lockfile. Kana link () inodzoka 0, lock iri kubudirira. Kana zvisina kudaro, shandisa stat (2) pane faira rakasiyana-siyana kuti uongorore kana kushambadzira kwayo kuwedzerwa kusvika ku 2, pane imwe nguva iyo lock iri kubudirira zvakare.

O_NOCTTY

Kana nzira iyo inoreva chiremera chekugadzirisa --- ona tty (4) -iyo haisi kuzogadzirisa kugadziriswa kwekugadzirisa kunyange kana iyo isina basa.

O_TRUNC

Kana iyo faira iripo uye iine faira nguva dzose uye nzira yakasununguka inobvumira kunyora (kureva,, i-O_RDWR kana O_WRONLY) ichaendeswa kune yakareba 0. Kana faira iri fifa yeFIFO kana yekupedzisira, faira yeO_TRUNC haina kufanirwa. Kana zvisina kudaro, mamiriro eO_TRUNC haana kutaurwa. (Pamitauro yakawanda yeLinux haicharegi; pane dzimwe shanduro, ichadzoka kukanganisa.)

O_APPEND

Faira inovhurwa mumapiritsi ekugadzirira. Pamberi pega rega nyora , peinter yefaira iri panzvimbo yekuguma kwefaira, sekunge iine lseek . O_APPEND inogona kutungamirira kumafaira anonyangadza paNFS mafaira emagetsi kana zvinopfuura imwechete nzira inowedzera data kune faira kamwechete. Izvi ndezvokuti NFS haitsigire kuendesa kune faira, saka muchengeti kernel anofanira kuifananidza, izvo zvisingakwanisi kuitwa pasina mhangemutange.

O_NONBLOCK kana O_NDELAY

Kana zvichikwanisika, faira inovhurwa musina kudzivirira mode. Hazvina kuzaruka kana kushanda kupi kwemufodhi kunotsanangura zvinodzorerwa kuchaita kuti basa rekudana rimirire. Nokubata kweFIFOs (inonzi mapipu), onawo mashanu (4). Iyi mamiriro haafaniri kuva nemigumisiro kune mafaira kunze kweFIFOs.

O_SYNC

Iyo faira inoshandurwa kuti ichishandurwe I / O. Chero zvinyorwa zvinyorwa pamusana pefaira file descriptor ichavhara hurongwa hwekushevedza kusvikira data yave yakanyora kunyorwa kune hardware iri pasi. Ona RETRICTICTIONS pasi, kunyange zvakadaro.

O_NOFOLLOW

Kana nzira yekufananidzira ichinyorwa chekufananidzira, saka iyo yakashaya. Ichi ndichokuwedzera kweBhreeBSD, iyo yakawedzerwa kuLinux muchirongwa 2.1.126. Zviratidzo zvinoshandiswa mumatongerwo epakutanga emugwagwa zvicharamba zvichitevedzwa. Musoro weglibc 2.0.100 uye gare gare inosanganisira tsanangudzo yemureza uyu; kernels isati yaitika 2.1.126 ichazvidza kana ikashandiswa .

O_DIRECTORY

Kana nzira yezita risati iri nyanzvi, ita kuti rusununguko ruregere. Iyi mureza ndeye Linux-chaiyo, uye yakawedzerwa mu kernel version 2.1.126, kuti udzivise zvinetso zvekuramba-zve-zvebasa kana opendir (3) yakadanwa paFIFO kana tape chipikisi, asi haifaniri kushandiswa kunze kwekushandiswa kwependir .

O_DIRECT

Edza kuderedza zvidzidzo zvekuchengetedzwa kweI / O kuenda uye kubva pane iyi faira. Kazhinji izvi zvinoderedza kushanda, asi zvinobatsira mumamiriro ezvinhu chaiwo, zvakadai apo apo maitiro anoita cache yavo pachavo. Faira I / O inowanikwa zvakananga ku / kubva kumusasa buffers space. I / O inoenderana, kureva, pakupedzwa kwekuverengwa (2) kana kunyora (2) kushevedzera kwenhepfenyuro, data inopihwa kuti yakashandurwa. Shandura hukuru, uye kuenzaniswa kwebasa rekushandisa uye faira offset inofanira kuva yakawanda yehukuru hunokosha hwemafaira yefaira.
Iyi mureza inotsigirwa pane zvakasiyana-siyana zveUnited-like; rubatsiro rwakawedzerwa pasi pe Linux mu kernel version 2.4.10.
Chimiro chechimiro chakafanana chekuvhara zvigadziri zvinorondedzerwa muvaraidzo (8).

O_ASYNC

Ita chiratidzo (SIGIO nenzira yakashata, asi izvi zvingashandurwa ne fcntl (2)) apo kuiswa kana kubuda kunogona kuitika pane iyi fodha yezvinyorwa. Izvi zvinongowanikwa chete kumagumisiro, zvigaro zvemagetsi, uye zvigaro. Ona fcntl (2) kuti uwane mamwe mashoko.

O_LARGEFILE

Pa-32-bit zvigadziro zvinotsigira MaFree Files System, rega mafaira ayo mashoma asingakwanise kumiririrwa mumabhitiramu 31 kuti azarurirwe.

Zvimwe zvezvikwata zvinosarudzwa zvinogona kuchinjwa uchishandisa fcntl mushure mekunge faira yavhurwa.

Nhaurirano yemafungiro inotsanangura zvibvumirano zvingashandise kana pakaitwa faira itsva. Ichishandurwa nemusk process inowanzoita: zvibvumirano zvefaira rakasikwa ((mode & ~ umask) . Cherechedza kuti iyi mamiriro chete anoshanda chete nekusvika kwekusvika kwefayidi yakangogadzirwa; ruzha rwakavhurwa runoita kuverenga-chete faira rinogona kudzorera kuverenga / kunyora file descriptor.

Izvozvo zvinotevera zvinomiririra zvinowanikwa nenzira :

S_IRWXU

Mutumwa we-00700 (firidzi weimba) akaverenga, kunyora nekuita mvumo

S_IRUSR (S_IREAD)

Mutumwa we-00400 akaverenga mvumo

S_IWUSR (S_IWRITE)

00200 anoshandisa mvumo yekunyora

S_IXUSR (S_IEXEC)

00100 anoshandisa mvumo

S_IRWXG

00070 boka rakaverenga, kunyora nekuita mvumo

S_IRGRP

00040 boka rakaverenga mvumo

S_IWGRP

00020 boka rine mvumo yekunyora

S_IXGRP

00010 boka rinoita mvumo

S_IRWXO

00007 vamwe vakaverenga, kunyora nekuita mvumo

S_IROTH

00004 vamwe vakaverenga mvumo

S_IWOWO

00002 vamwe vakanyora mvumo

S_IXOTH

00001 vamwe vanoita mvumo

mamiriro ekufanirwa anofanira kujekeswa apo O_CREAT iri mumabhogi , uye haafaniri kutarisirwa zvimwe.

kusika kwakaenzana nekuzarura nemajegi akaenzana naO_CREAT | O_WRONLY | O_TRUNC .

Dzokerazve kukoshesa

kuvhura uye kusika kudzoka iyo faira itsva descriptor, kana -1 kana kukanganisa kwakaitika (mumamiriro ezvinhu akadaro, errno inogadzirirwa zvakakodzera). Cherechedza kuti kuzarura kunogona kuzarura chikwata chakakosha mafaira, asi chisiki hachigone kuvasika - shandisa mknod (2) pane.

Pamusoro peNFS mafaira mafaira neUID mapping anobvumira, yakasununguka inogona kudzorera fodha yezvinyorwa asi eg kuverenga (2) chikumbiro chinorambwa neEACCES . Izvi ndechokuti muchengeti anoita pachena kana achiongorora zvibvumirano, asi UID mapping inogadzirwa nevharesi paanoverenga nekunyora zvikumbiro.

Kana iyo faira ichangobva kusikwa, iyo atime, ctime, mtime minda yakagadzirirwa panguva ino, uye ndizvo zvakaita ctime uye mtime minda yemubereki. Kana zvisina kudaro, kana faira ichishandurwa nekuda kwepepeti yeO_TRUNC, nguva yaro uye mtime yakaiswa panguva ino.

Zvikanganiso

EEXIST

pathname kakatovapo uye O_CREAT uye O_EXCL zvakashandiswa.

EISDIR

pathname inoreva bhuku uye ruzivo rwakakumbirwa runosanganisira kunyora (kureva kuti, O_WRONLY kana O_RDWR inogadzirirwa).

EACCES

Izvo zvakakumbirwa kuwana kune faira hazvibvumirwi, kana rimwe remitemo iri munzira yaisabvumira kutsvaga (kuita) mvumo, kana kuti faira yakanga isati yavapo uye kunyora kuwanikwa kumubhadhari wevabereki haibvumirwi.

ENAMETOOLONG

pathname yakanga yakareba.

ENOENT

O_CREAT haisi yakagadzirirwa uye zita rakanzi faira haipo. Kana, iyo nyanzvi yekutsvaga in pathname haisipo kana inofananidzira kuenzanisira.

ENOTDIR

Chimwe chikamu chinoshandiswa semutauro mu pathname haisi, ikoizvo, sarudzo, kana O_DIRECTORY yakataurwa uye nzira yezita raive isiri yecherechedzo .

ENXIO

O_NONBLOCK | O_WRONLY yakagadzirirwa, iyo inonzi yaita fifa ndeye FIFO uye hapana nzira inoshandiswa nefaira yekuverenga. Kana kuti, faira iyi faira chaiyo yefaira uye hapana chikwata chinoenderana chiripo.

ENODEV

pathname inoreva chidimbu chakakosha faira uye hapana chikwata chinoenderana chiripo. (Iyi Linux kernel bug - mumamiriro aya ENXIO inofanira kudzorerwa.)

EROFS

pathname inoreva faira pane imwe nzira yekuverenga-chete uye kunyora kuwanikwa kwakakumbirwa.

ETXTBSY

pathname inoreva mufananidzo unouraya unenge uchirairwa uye kunyora kuwanikwa wakabvunzwa.

EFAULT

pathname inotarisa kunze kwekugona kugona pakero yekero.

ELOOP

Zvizhinji zvekufananidzira zvinosanganiswa zvakasangana mukugadzirisa pathname , kana kuti O_NOFOLLOW yakataurwa asi nzira yezita raive chiratidzo chekufananidzira.

ENOSPC

pathname yaifanira kusikwa asi chimbo chine pathname hachina nzvimbo yefaira idzva.

ENOMEM

Kukwana kwakakwana kernel memory yaivepo.

EMFILE

Izvo zvinenge zvatova nenhamba yakawanda yefaira yakazaruka.

ENFILE

Muganhu wehuwandu hwehuwandu hwemafaira akazaruka pahurongwa hwasvika.

Kuwirirana

SVr4, SVID, POSIX, X / OPEN, BSD 4.3 IO_NOFOLLOW uye O_DIRECTORY zvikwata zvine Linux-zvakanyanya . Mumwe angafanirwa kutsanangura _GNU_SOURCE macro kuti awane tsanangudzo dzavo.

Zvibvumirano

Pane zvakawanda zvisina kukodzera muprotocol iri pasi peNFS, inosangana pakati peimwe O_SYNC neO_NDELAY .

POSIX inopa zvitatu zvakasiyana zvakasiyana-siyana zveI / O, zvinopindirana nemajeji O_SYNC , O_DSYNC uye O_RSYNC . Parizvino (2.1.130) izvi zvose zvinowirirana pasi peLuxux.