Mọ awọn Open Open Linux

Atọkasi

#include << A HREF = "fáìlì: /usr/include/sys/types.h"> sys / types.h> Ṣiṣe "A HREF =" faili: /usr/include/sys/stat.h "> sys / stat.h> Fi kan "A HREF =" fáìlì: /usr/include/fcntl.h "> fcntl.h> ìmọ ìmọ (const char * pathname , awọn ifọwọsi inu ); int ìmọ (const char * pathname , awọn ifihan agbara , mode_t mode ); int ṣẹda (const char * pathname , mode_t mode );

Apejuwe

Ilana ti a ṣii () ti a ṣii () ti a lo lati ṣe ayipada ọna-ọna kan sinu iwe-aṣẹ faili kan (kekere, nọmba alaiṣe ti kii-odi fun lilo ni I / O tẹle bi pẹlu kika , kọ , ati be be lo). Nigba ti ipe naa ba ṣe aṣeyọri, fáìlì faili pada wil jẹ fáìlì fáìlì ti o ni asuwon ti ko ṣii sibẹ fun ilana naa. Ipe yi ṣẹda faili titun ṣii, ko pín pẹlu ilana miiran. (Ṣugbọn awọn faili ti a ṣii ṣii le dide nipasẹ ipe eto apọju (2). Awọn akọsilẹ faili titun ti ṣeto lati wa ni ṣiṣi si awọn iṣẹ iṣẹ-iṣẹ (wo fcntl (2)). Aṣepawọn faili ti ṣeto si ibẹrẹ ti faili naa.

Awọn asia tuntun jẹ ọkan ninu O_RDONLY , O_WRONLY tabi O_RDWR ti o beere lati ṣii akọsilẹ nikan, kọ-nikan tabi ka / kọ, lẹsẹsẹ, bitwise- tabi 'd pẹlu odo tabi diẹ ẹ sii ti awọn atẹle:

O_CREAT

Ti faili ko ba si tẹlẹ yoo ṣẹda. Oluwa (ID olumulo) ti faili ti ṣeto si ID olumulo ti o munadoko naa. A ṣeto ẹgbẹ ẹgbẹ (ID ẹgbẹ) boya si ID ẹgbẹ ti o munadoko ti ilana naa tabi si ID ẹgbẹ ti igbimọ ẹbi (ti o da lori iruṣi faili irufẹ ati awọn aṣayan gbigbe, ati ipo ti itọsọna ẹda, wo, fun apẹẹrẹ, oke awọn aṣayan bsdgroups ati awọn sysvgroups ti awọn ọna eto ext2, bi a ti ṣalaye ni oke (8)).

O_EXCL

Nigbati a ba lo pẹlu O_CREAT , ti o ba jẹ pe faili naa wa tẹlẹ, o jẹ aṣiṣe ati pe ìmọ yoo kuna. Ni ọna yii, asopọ asopọ ti o wa, laibikita ibiti awọn ojuami rẹ wa. O_EXCL ti ṣẹ lori awọn ọna kika NFS , awọn eto ti o gbẹkẹle o fun ṣiṣe awọn iṣẹ-ṣiṣe titiipa yoo ni ipo iṣirisi kan. Ojutu fun ṣiṣe awọn faili ti n ṣatunṣe nkan atomiki nipa lilo titiipa kan jẹ lati ṣẹda faili ti o ṣoju lori fs kanna (fun apẹẹrẹ, ṣafikun orukọ olupin ati olupin), lo ọna asopọ (2) lati ṣe asopọ si titiipa. Ti ọna asopọ () ba pada 0, titiipa jẹ aṣeyọri. Bibẹkọkọ, lo stat (2) lori faili ti o ṣawari lati ṣayẹwo ti imọka asopọ rẹ ti pọ si 2, ninu eyiti irú titiipa naa tun ṣe aṣeyọri.

O_NOCTTY

Ti ọna- orukọ ba n tọka si ẹrọ ẹru --- wo tty (4) --- kii yoo di iṣakoso iṣakoso ti o ba jẹ pe ilana naa ko ni ọkan.

O_TRUNC

Ti faili ba wa tẹlẹ ati pe faili faili deede ati ipo isanwo gba iwe kikọ (ie, O_RDWR tabi O_WRONLY) yoo ni igbadun si ipari 0. Ti faili naa jẹ faili FIFO tabi ẹrọ isakoṣo, a ko gba aami Flag O_TRUNC. Bibẹkọkọ, awọn ipa ti O_TRUNC ko ni imọran. (Lori ọpọlọpọ awọn ẹya Linux o ni yoo bikita; lori awọn ẹya miiran, yoo pada si aṣiṣe.)

O_APPEND

A ṣii faili naa ni ipo append. Ṣaaju ki o to kọwe kọọkan, itọnisọna faili wa ni ipo ni opin faili naa, bi ẹnipe pẹlu lseek . O_APPEND le ja si awọn faili ti o bajẹ lori awọn ọna kika NFS ti o ba ju ilana kan lọ fi data lọ si faili ni ẹẹkan. Eyi jẹ nitori NFS ko ṣe atilẹyin fun gbigbe si faili kan, nitorina ni ekuro onibara ṣe lati ṣe simulate, eyi ti a ko le ṣe laisi aṣa ije.

O_NONBLOCK tabi O_NDELAY

Nigbati o ba ṣeeṣe, a ṣii faili naa ni ipo ti kii ṣe idaabobo. Bẹni awọn ṣiṣi tabi awọn iṣẹ ti o tẹle lori iwe-aṣẹ faili ti o ti pada yoo fa ilana ipe lati duro. Fun mimu awọn FIFOs (oniwa ti a npè ni), wo fifo (4). Ipo yii ko ni ipa lori awọn faili miiran ju FIFOs.

O_SYNC

Ti ṣii faili naa fun sisọpọ I / O. Eyikeyi kọ s lori iwe-aṣẹ faili ti o ni imọran yoo dènà ilana ipe titi ti a fi kọwe si akọsilẹ si ohun elo abuda. Wo RESTRICTIONS ni isalẹ, tilẹ.

O_NOFOLLOW

Ti ọna-ọna jẹ ọna asopọ apẹrẹ, lẹhinna ìmọ naa kuna. Eyi jẹ igbasilẹ FreeBSD, eyiti a fi kun si Lainos ni version 2.1.126. Awọn itumọ ami ni awọn nkan ti o wa tẹlẹ ti ọna-ọna naa yoo tun tẹle. Awọn akọsori lati glibc 2.0.100 ati nigbamii pẹlu alaye kan ti ọkọ yi; kernels ṣaaju ki 2.1.126 yoo foju o ti o ba lo .

O_DIRECTORY

Ti ọna-ọna ko ba kan igbasilẹ, fa ìmọ lati kuna. Iwọn yi jẹ Lainos-pato kan, a si fi kun ni ekuro version 2.1.126, lati yago fun awọn iṣoro ikọsilẹ ti o ba jẹ pe opendir (3) ni a npe ni FIFO tabi ẹrọ ipara, ṣugbọn ko yẹ ki o lo ni ita ti imuse ti opendir .

O_DIRECT

Gbiyanju lati dinku awọn iwo cache ti I / O si ati lati faili yii. Ni apapọ gbogbo eyi yoo ṣe ipalara iṣẹ, ṣugbọn o wulo ni awọn ipo pataki, bii nigba ti awọn ohun elo ṣe iṣiro ara wọn. I / O faili ti wa ni taara si / lati awọn alabara aaye aaye olumulo. I / O jẹ iṣeduro, ie, ni ipari ti ka kika (2) tabi kọ (2) ipe eto, a ti ṣe idaniloju ti o ti gbe. Awọn titobi gbigbe, ati titete aṣoju olumulo ati idapọ faili gbọdọ jẹ awọn nọmba ti iwọn iwọn iṣiro ti faili faili.
Ilana yi ni atilẹyin lori nọmba ti awọn ilana UNIX; atilẹyin ni a fi kun labẹ Lainos ni ekuro version 2.4.10.
A ṣe apejuwe irufẹ itọnisọna irufẹ fun awọn ohun elo apẹrẹ ni aise (8).

O_ASYNC

Ṣe ifihan agbara kan (SIGIO nipasẹ aiyipada, ṣugbọn eyi le yipada nipasẹ fcntl (2)) nigbati titẹ silẹ tabi oṣiṣẹ ṣee ṣe lori iwe-faili faili yii. Ẹya ara ẹrọ yii nikan wa fun awọn ọkọ ayọkẹlẹ, awọn ebute atẹgun, ati awọn ibọsẹ. Wo fcntl (2) fun alaye siwaju sii.

O_LARGEFILE

Lori awọn ọna-ọna 32-bit ti o ṣe atilẹyin fun Awọn faili ti o tobi julo, gba awọn faili ti awọn titobi rẹ ko le wa ni ipoduduro ni awọn 31 iṣẹju lati ṣii.

Diẹ ninu awọn aṣiṣe aṣayan wọnyi le ṣee yipada nipa lilo fcntl lẹhin ti a ti ṣi faili naa.

Ipo ariyanjiyan ṣe alaye awọn igbanilaaye lati lo ninu ọran ti a ṣẹda faili titun kan. O ti ṣe atunṣe nipasẹ awọn ọna ṣiṣe ti ọna naa ni ọna deede: awọn igbanilaaye ti faili ti a ṣẹda ni (mode & ~ umask) . Akiyesi pe ipo yii nikan kan si awọn wiwọle si iwaju ti faili tuntun ti a ṣẹda; ipe ti o ṣẹda ti o ṣẹda faili kika-nikan le daa pada iwe-aṣẹ kika / kọ faili.

Awọn idiwọn aami apẹẹrẹ wọnyi ni a pese fun ipo :

S_IRWXU

00700 olumulo (oluṣakoso faili) ti ka, kọ ati ṣiṣẹ igbanilaaye

S_IRUSR (S_IREAD)

00400 olumulo ti ka igbanilaaye

S_IWUSR (S_IWRITE)

00200 olumulo ni o ni iwe igbanilaaye

S_IXUSR (S_IEXEC)

00100 olumulo ti ṣiṣẹ igbanilaaye

S_IRWXG

00070 ẹgbẹ ti ka, kọ ati ṣiṣẹ igbanilaaye

S_IRGRP

00040 ẹgbẹ ti ka igbanilaaye

S_IWGRP

00020 egbe ni o ni iwe igbanilaaye

S_IXGRP

00010 ẹgbẹ ti ṣiṣẹ igbanilaaye

S_IRWXO

00007 awọn ẹlomiiran ti ka, kọ ati ṣiṣe idasilẹ

S_IROTH

00004 awọn miran ti ka igbanilaaye

S_IWOTH

00002 awọn ẹlomiran ni iwe-aṣẹ kikọ

S_IXOTH

00001 awọn miran ti ṣiṣẹ igbanilaaye

ipo gbọdọ wa ni pato nigbati O_CREAT wa ninu awọn asia , ti a ko bikita bibẹkọ.

ṣẹda jẹ deede lati ṣii pẹlu awọn asia to dogba si O_CREAT | O_WRONLY | O_TRUNC .

Pada iye owo

ṣii ati ki o ṣẹda pada faili titun faili, tabi -1 ti aṣiṣe ba ṣẹlẹ (ninu eyi ti a ṣe, errno ti ṣeto daradara). Akiyesi pe ṣiṣi ṣii awọn faili pataki ẹrọ, ṣugbọn ṣẹda ko le ṣẹda wọn - lo mknod (2) dipo.

Lori awọn ọna kika NFS pẹlu kikọ oju-iwe UID ti a ṣiṣẹ, ṣii le ṣipada iwe-faili faili ṣugbọn apẹẹrẹ ka (2) awọn ibeere ti wa ni sẹ pẹlu EACCES . Eyi jẹ nitori onibara wa ni ṣii nipasẹ ṣayẹwo awọn igbanilaaye, ṣugbọn awọn aworan ti UID ṣe nipasẹ olupin lori kawe ati kọ awọn ibeere.

Ti o ba ṣẹda faili tuntun ni kiakia, awọn akoko rẹ, ctime, awọn akoko igbati ni a ṣeto si akoko to wa, ati bẹ naa ni awọn akoko igba ati awọn akoko akoko ti itọsọna awọn obi. Bibẹkọ ti, ti o ba ti ṣatunṣe faili nitori aami O_TRUNC, awọn akoko igba ati akoko mtime ti ṣeto si akoko to wa.

Aṣiṣe

EEXIST

Ọna ti wa tẹlẹ wa ati O_CREAT ati O_EXCL .

EISDIR

ọna- orukọ n tọka si itọnisọna kan ati wiwọle ti a beere fun kikọ kikọ silẹ (ti o jẹ, O_WRONLY tabi O_RDWR ti ṣeto).

EACCES

A ko gba ọ laaye wiwọle si faili naa, tabi ọkan ninu awọn itọnisọna ni namesname ko gba laaye (ṣiṣẹ) igbanilaaye, tabi faili naa ko si tẹlẹ sibẹ ko si kọ iwọle si iyọọda awọn obi ko gba laaye.

ENAMETOOLONG

ọna-ọna jẹ gun ju.

PẸRẸ

O_CREAT ko ni ṣeto ati pe faili ti a ko ni tẹlẹ. Tabi, akojopo itọnisọna ni wayname ko si tẹlẹ tabi jẹ asopọ asopọ ti o npọ.

TITẸ

A paati ti a lo bi itọsọna kan ni orukọ- ọna kii ṣe, ni otitọ, itọsọna kan, tabi O_DIRECTORY ti a pato ati pe orukọ- ọna kii ṣe itọnisọna kan.

NIPA

O_NONBLOCK | O_WRONLY ti ṣeto, faili ti a npè ni FIFO ati pe ko si ilana ti faili naa ṣii fun kika. Tabi, faili naa jẹ faili pataki ẹrọ kan ati pe ko si iru ẹrọ to wa.

ENODEV

ọna- orukọ n tọka si faili pataki ẹrọ kan ati pe ko si iru ẹrọ to wa. (Eyi jẹ kokoro kokoro kọnputa Linux - ni ipo yii ENXIO gbọdọ wa ni pada.)

Awọn ẹri

ọna- orukọ tọka si faili kan lori awọn faili ipilẹ-nikan ati ki o kọ wiwọle ti a beere.

ETXTBSY

ọna- orukọ n tọka si aworan ti o ti n ṣe lọwọlọwọ ti a ṣe paṣẹ ati kọ wiwọle ti a beere.

EFAULT

ọna oju- ọna si ita aaye aaye iwọle rẹ.

ELOOP

Ọpọlọpọ awọn asopọ apẹẹrẹ ti ni ipade ni ọna ipinnu ipinnu, tabi O_NOFOLLOW ti a pato sugbon ọna-ọna jẹ ọna asopọ aami kan.

ENOSPC

ọna-orukọ ni lati ṣẹda ṣugbọn ẹrọ ti o ni awọn ọna-ipa ko ni aye fun faili tuntun.

ENOMEM

Iwe iranti ekuro ti ko to.

EMFILE

Ilana naa ti ni nọmba to pọ julọ ti awọn faili ṣii.

NIPA

Iwọn lori nọmba gbogbo awọn faili ti o ṣii lori eto naa ti de.

Ṣe ibamu si

SVr4, SVID, POSIX, X / OPEN, BSD 4.3 Awọn O_NOFOLLOW ati awọn O_DIRECTORY awọn asia ni Linux -specific. Ọkan le ni lati ṣe alaye macro _GNU_SOURCE lati gba awọn itumọ wọn.

Awọn ihamọ

Ọpọlọpọ ailera ni o wa ninu Ilana ti o ni ipilẹ NFS, ni ipa pẹlu awọn O_SYNC ati O_NDELAY .

POSIX pese fun awọn iyatọ mẹta ti I / O ti a ṣe amuṣiṣẹpọ, ti o baamu awọn awọn ifihan O_SYNC , O_DSYNC ati O_RSYNC . Lọwọlọwọ (2.1.130) gbogbo wọn ni gbogbo awọn irufẹ labẹ Lainos.