Synopsis
#include << A HREF = "pelê: /usr/include/sys/types.h"> sys / types.h> #include << A HREF = "pelê: /usr/include/sys/stat.h"> sys / stat.h> #include << A HREF = "pelê: /usr/include/fcntl.h"> fcntl.h> int vekirî ( xwerû * rêname , int flag ); vekirî ( veqetandî * * * * * * * * * * * * * * çêtirîn ( çêberek * * * * * * * * * * * ;Terîf
Pergala vekirî ya sîstema veguhestinê (ya) tête bikaranîn ku ji bo peldanka pelê veguherînek veguherîn ((piçûk, neyînî-nexterî ya ji bo bikaranîna I / O ve wekî xwendin , binivîsin , etc.) biguherînin. Dema ku banga serkeftî ye, pelê pencereyê vegerî wilê pelê herî jêrîn a descriptor ne ku niha ji bo pêvajoya vekirî ye. Vê pelê pelê vekirî ya nû nû dike, ne bi pêvajoyek din re parve kirin. (Lê pelên vekirî yên vekirî dikare bi rêya sîstema diranan (2) dikare dişibîne.) Peldanka pelê ya nû vekirî ye ku li ser tevgerên bicîhkirî vekirî bimînin ( fcntl (2) bibînin. Pelana pelê destpêka pelê vekirî ye.
Li alîgirên parameterê yek ji navnîşana O_RONLY , O_WRONLY an O_RDWR e ku ji bo xweya pirtûkan vekin, tenê bi tenê binivîse an jî nivîskî / nivîskî bixwînin, an jî bitikîne- an an jî bi şeyran an bêtir ji jêrîn re digotin:
O_CREAT
Heke pelê nîne, ew ê ava kirin. Malpera (ID-ê bikarhêner) ji pelê vekirî ye ku nasnameya bikarhênerê ya ya bandor a pêvajoyê. Malpera koma xwediyê (ID-ê-komê) ji hêla komîteya grûpê ya pêvajoyê ve an naveroka koma navnîşê dêûbavê (li ser pergala pelê pergalê û alternatîfên mount, û rêbazê dêûbav, dê bibînin, wek, mount alternatîfên bsdgroups û syswroupên yên ext2 pelan, wekî ku li çiyayê (8) têne diyar kirin.
O_EXCL
Dema ku OREREAT bi kar tîne , heke pelê jixwe heye ev çewtiyek e û dê dê vekirî nebe. Di vê çarçoveyê de, girêdana sembolîk heye, nebe ku bêyî ku derheqê wê derê. O_EXCL li ser pergalên pelên NFS hate şikandin, bernameyên ku bi kar tîne ji bo karên laşaniyê dê di rewşeka nijadî de bibin. Pirsgirêka ji bo pelê atomîk bi karanîna pêdivî ye ku pêdivî ye ku pêdivî ye ku pêdivî ye ku pêdivî ye ku pêdivî ye. Ger girêdana ( 0 ) vegerîne, lock serkeftî ye. Dibe ku, pelê (2) li ser pelê bêhempa bikar bînin ku bizanin ka gerjimara wî ya zêde zêde bûye, di rewşeke xilas de jî serkeftî ye.
O_NOCTTY
Heke paveyê navnîşê bi amûrek termînal ve girêdayî ye --- tty (4) --- binêrin --- ew ê pêvajoya termînelkirina pêvajoya terminalê nebûye ger heger pêvajoyê tune.
O_TRUNC
Heke pelê berê heye û ev pelê rasterast e û pergalek vekirî nivîskî (ango, O_RDWR an jî O_WRONLY) wê dê di dirêjahiya 0 de dabeşkirin. Heke pelê FIFO an jî pelê termînalê ye, dê ala O_TRUNC bête red kirin. Wekî din, bandora O_TRUNC ne diyar e. (Di vîdyoyên gelek Linux de dê bêne guhartin; li ser versiyonên din, ew ê çewtiyek vedigere.)
O_APPEND
Di pelê de pelê vekirî ye. Berî her kesî nivîsîn , di navnîşa pelê de di dawiya pelê de ye, wek ku bi lseek . O_APPEND dibe ku pelên li ser pergala pelên NFS-ê li ser pêvajoyek daneyên pelê di heman demê de pelê veşartî bibin. Ji ber ku NFS ne piştgiriya pelê piştgirî dike, da ku ji kernelê kernel re wê cewher bike, ku bêyî ku nijadek nijadetê neyê kirin.
O_NONBLOCK an O_NDELAY
Dema ku gengaz dibe, pelê di moda ne-astengkirinê de vekirî ye. Ne ne vekirî vekirî an jî operasyonên paşê li ser pelê descriptor yê ku ve hatibe veguhestin dê ji bo pêvajoyê bangê benda bendê. Ji bo ku ji bo FIFO (navê pipesên din), pênc (4) jî bibînin. Ev pêdivî ye ku pêdivî li pelên din ji FIFO-ê ve tune.
O_SYNC
Pelê ji bo I / O synchronous vekirî ye. Wekî nivîskî li ser pelê encamkirina encamên encamê, dê pêvajoya banga bêdeng bike, heta ku daneyên fîzîkî bi fîzîkî ve tête nivîsandin. BİXWÎNE BİXWÎNE, tevî ku
O_NOFOLLOW
Heke pavek nameyek pêwendiyek sembolîk e, paşê vekirî nabe. Ev dirêjkirina belavkirina FreeBSD e, ku li Linux di versiyon 2.1.126 de hate zêdekirin. Lînkên sembolîk ên di çarçoveyên pêşîn ên riya paşnav dê hîn jî be. Serokên ji glibc 2.0.100 û paşê li vê ala ala vê ala jî hene; kernelên ku berî 2.1.126 dê wê bikar bîne bîra wê .
O_DIRECTORY
Heke rêbername ne pirtûkxaneyê ye, dibe sedema vekirî ya vekirî. Ev ala Linux-taybetî ye, û di kernelê 2.1.126-ê de hate zêdekirin, ku ji ber pirsgirêkên înkar-ê-xizmetê ne ji ber ku opendir (3) li ser FIFO an jî tape tê de tê gotin, lê divê bêyî pêvajoya opendir bikar anîn. .
O_DIRECT
Vebijêrin ku bandorên kêşeyên yên I / O ji nav vê pelê de. Di gelemperî de dê ev karê xweşrikê hilweşînin, lê ew di rewşên taybet de, bi karanîna pêkanîna kêşeyên taybet re, ew e. Daxuyaniya I / O bi rasterast ji bo / vekirî ya bikarhênerên bikarhêner pêk tê. I / O hemdem e, ango, di temamkirina xwendinê de (2) an jî telefonê (2) nivîsandinê binivîse , daneyên garantîkirî ji bo veguhastin. Sermaseyên veguherînan, û rêza alavê bikarhêner û pelê pêdivî ye ku hemî pîvanên bloka laşî yên pergala pelan be.
Ev ala li ser çend sîstemên Unix-yên mîna piştevanîya piştgirî ye; Piştgiriya li Linux di kernelê 2.4.10 de hate zêdekirin.
Ji bo amûrên bloyan di rawê (8) de tête navendek semîmîkî .
O_ASYNC
Hîşkek nîşan bide (SIGIO bi default, lê ev dikare bi fcntl (2) veguherîne dikare dema ku pêvek an derheqê pelê vê pelê descriptor dibe. Ev taybetmendî tenê ji bo termînal, pseudo-terminals, û sockets hene. Ji bo agahdariyên bêtir fcntl (2) binêre.
O_LAREFEFILE
Li ser pergalên 32-bit ku piştgiriya Pergalên Mezin ên piştevanî, pelên xwe yên ku di 31 bîtên vekirî vekirî nebin nayên nîşandan.
Hinek ji van alîgirên derveyî yên ku piştî pelê vekirî ve fcntl bikar bînin guhertin.
Mode armanc diyar dike ku pelan ji bo pelê nû ve hatî bikaranîn. Ew bi rêya riya pêvajoyê ya veguhestinê ve tê guhertin: Destûra pelên afirandî (modes & ~ umask) ne . Têbînî ku vê modê tenê tenê têketinên pêşeroj ên pelê nû çêkirî ye; banga vekirî ya ku pelê tenê-xwendinê çê dibe dibe ku ji hêla pelê vegere / nivîsandina nivîskî vegere.
Dermanên jêrîn ên jêrîn yên ji bo modêla tên dayîn:
S_IRWXU
00700 bikarhêner (xwedane pelê) xwende, nivîsandin û destûrkirinê kiriye
S_IRUSR (S_IREAD)
00400 bikarhêner bi destûra xwendinê vekir
S_IWUSR (S_IWRITE)
00200 bikarhêner bi destûrê ve hatî nivîsandin
S_IXUSR (S_IEXEC)
00100 bikarhêner bi destûr kir
S_IRWXG
00070 komek destûra xwendin, nivîsandinê û destûr kir
S_IRGRP
00040 komek destûra xwendin
S_IWGRP
00020 grûp destûrê dide nivîsîn
S_IXGRP
00010 koma destûr kir
S_IRWXO
00007 kesên din xwendin, binivîsin û destûra xwe hene
S_IROTH
00004 kesên din destûr dixwînin
S_IWOTH
00002 kesên din destûr dikin
S_IXOTH
00001 kesên din destûr kirin
Mîheng divê dema ku O_CREAT di alên alan de ye , û nayê guhartin.
creat e ku ji alayên aliyên O_CREAT vekirî vekin vekirî ye. O_WRONLY | O_TRUNC .
RETURN VALUE
vekirî û çêkirina pelê pelê nû navekî nû, an-1 eger çewtiyek çêbû (di kîjan rewşê de, xeletî bi awayek rast e). Têbînî ku vekirî pelên pelên taybet ên vekirî vekin, lê dibe ku çêbikin wan çêbikin - bila mknod (2) bikar bînin.
Li ser pergalên pelan ên NFS-ê ku bi muxalîfê UID-ê vekirî tê vekirî, vekirî dikare pelê pelê vedigere, lê wek nimûne (2) daxwazên xwendinê bi EACCES re red kirin . Ji ber ku mişterî bi kontrolkirina destûra vekirî ye, lê ji bo daxwazên xwendinê û xwendinê li ser serverê UID ji hêla serverê tête kirin.
Heke pelê nû nû hatiye afirandin, zeviyên wê, ctime, zeviyên mêjî di demên heyî de têne damezirandin, û hingê cûr û meyteyên derhênerê dêûbê hene. Wekî din, eger pel ji ala O_TRUNC veguherîne guherîn, zeviyên ctime û mtime wê di dema dem de ye.
Şaş
EEXIST
pathname berê heye û O_CREAT û O_EXCL bikar anîn.
EISDIR
pathname ji bo derhênerê tête nivîsandin û nivîsandina daxwaza tevlêbûnê (ew e, an jî O_RRONWY an O_RDWR hate sazkirin).
EACCES
Pêdivî ye ku ji bo pelgeya pelê nayê destnîşankirin, an yek ji derhêneran di pathnameyê de ne destûr nedikarî (destûra serîlêdanê ) destûr nekir, an pelê nehatiye nivîsandin û destûra nivîsandinê dêûbavê dêûbavan ne.
ENAMETOOLONG
pathname pir dirêj bû.
ENOENT
O_CREAT nehatiye danekirin û pelê navnîş nayê zanîn. An jî, pergala peldanka di pathname de nîne an girêdana sembolîk heye.
ENOTDIR
A beşek wekî rêkerek di rêbazê de tê bikaranîn ne, ne, rastî, rêkûpêk, an jî O_DIRECTORY hate diyarkirin û rêbername ne pirtûkxaneyê bû.
ENXIO
O_NONBLOCK | O_WRONLY, tête pelê navê FIFO ye û pêvajoyek ji bo xwendina pelê vekirî tune. An jî pelê pelê pisporek taybet e û cîhaza peywendîdar tune.
ENODEV
pathname di pelê taybet de cîhaz dike û naveroka peywendîdar tune. (Ev pargala kernelê Linux e - di vê rewşê de ENXIO divê were vegerandin.)
EROFS
pathname di pelê tenê-pergala xwendinê de û pelê nivîskî daxwaza daxuyaniyê dide.
ETXTBSY
pathname ji bo pergala bicîhkirinê ya ku ji bo darizandin û veguhestinê tê vegotin ve tê xwestin.
EFAULT
derveyî navnîşên navnîşên derveyî cîhê navnîşana navnîşê ya we were.
ELOOP
Gelek girêdanên sembolîk di nav çareseriya rêwiyan de bûne , an jî O_NOFOLLOW hate diyarkirin lê belê paveya navnîşê li girêdana sembolîk bû.
ENOSPC
pathname bû ku were afirandin, lê amûra ku bi rêbazê ye ku ji bo pelê nû nabe.
ENOMEM
Bîranîna kernel nebû.
EMFILE
Pêvajoya ku hejmara hejmara pelan vekirî vekirî ye.
ENFILE
Gelek hejmarên pelan li ser pergalê vekirî ye.
Agahdariyê bikin
SVR4, SVID, POSIX, X / OPEN, BSD 4.3 Berbi O_NOFOLLOW û O_DIRECTORY alavên Linux -specific in. Pêwîste ku defineên _GNU_SOURCE macro bike ku ji bo nirxên xwe bigirin.
Sînor
Di protokolê ya NFS de gelek celeb hene, bandorên din ên li ser O_SYNC û O_NDELAY hene .
POSIX ji sê cûrên cuda yên I / O re, pêşkêşî alên O_SYNC , O_DSYNC û O_RSYNC pêşkêş dike . Niha (2.1.130) hemî hemî hemî hemî hemî hemî hemî hemî hemî hemî hemî hemî hemî hemî ne.