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.