Fermana Fermana Linux ya fêr bibin

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.