Anotacija
#include
apibūdinimas
Theatviras() sistemos skambutis linux komanda yra naudojamas paversti pavardę į failo deskriptorių (mažas, neigiamas sveikasis skaičius, skirtas naudoti vėlesniame įvesties / išvesties, kaip ir skaityti, parašykir tt). Kai skambutis sėkmingas, failo deskriptorius grąžino wil yra mažiausias failų deskriptorius, kuris šiuo metu nėra atidarytas procesui. Šis skambutis sukuria naują atvirą failą, kuris nėra bendrinamas su jokiu kitu procesu. (Tačiau bendri atidaryti failai gali atsirasti naudojantšakutė(2) sistemos skambutis.) Naujas failų deskriptorius yra atidarytas per exec funkcijas (žrfcntl(2)). Failo nuskaitymas nustatomas į failo pradžią.
Parametras vėliavos yra vienas išO_RDONLY, O_WRONLY arbaO_RDWR kuri prašo atidaryti failą tik skaityti, tik rašyti ar skaityti / rašyti, atitinkamai bitwise- arba "d su nuline ar daugiau iš šių:
O_CREAT
Jei failas neegzistuoja, jis bus sukurtas. Failo savininkas (vartotojo ID) nustatomas kaip veiksmingas proceso naudotojo ID. Grupės nuosavybės (grupės ID) reikšmė priklauso nuo proceso efektyvios grupės ID arba iš tėvų aplanko grupės ID (priklausomai nuo failų sistemos tipo ir montavimo parinkčių bei pagrindinio katalogo režimo, žr., Pvz., Kalno galimybės bsdgroups ir sysvgroups ext2 failų sistemos, kaip aprašytakalnas(8)).
O_EXCL
Kai naudojamas suO_CREAT, jei failas jau egzistuoja, tai yra klaida iratviras nepavyks. Šiame kontekste egzistuoja simbolinė nuoroda, nepriklausomai nuo to, kur ji nurodo.O_EXCL yra sugadintas į NFS failų sistemas, programose, kurios remiasi užrakinimo uždavinių vykdymu, bus nurodyta lenktynių būklė. Atominių failų užblokavimo užraktas naudojant užrakto failą yra sukurti unikalų failą tame pačiame fs (pvz., Įtraukiant prieglobos serverio pavadinimą ir pid), naudoti nuorodą (2), kad būtų sukurta nuoroda į užrakto failą. Jeinuoroda () grąžina 0, užraktas yra sėkmingas. Priešingu atveju naudokite stat(2), kad patikrintumėte, ar jo ryšio skaičius padidėjo iki 2, tokiu atveju užraktai taip pat sėkmingi.
O_NOCTTY
Jei pathname nurodo galinį įrenginį --- žrtty(4) --- tai netaps proceso valdymo terminalu, net jei procesas jo nėra.
O_TRUNC
Jei failas jau egzistuoja ir yra įprastas failas, o atviras režimas leidžia rašyti (t. Y., Yra O_RDWR arba O_WRONLY), jis bus sutrumpintas iki 0. Jei failas yra FIFO arba terminalo įrenginio failas, vėliavėlė O_TRUNC ignoruojama. Priešingu atveju O_TRUNC poveikis yra nenustatytas. (Daugelyje Linux versijų jis bus ignoruojamas, kitose versijose bus grąžinta klaida.)
O_APPEND
Failas atidaromas pridėti režimu. Prieš kiekvienąparašykfailo žymeklis yra failo pabaigoje, tarsi sulseek. O_APPEND gali sukelti sugadintus failus NFS failų sistemose, jei daugiau nei vienas procesas vienu metu prideda duomenis prie failo. Taip yra todėl, kad NFS nepalaiko pridėti prie failo, taigi kliento branduolys turi jį imituoti, o tai negali būti padaryta be rasės būklės.
O_NONBLOCK arbaO_NDELAY
Kai įmanoma, failas atidaromas neblokuojant. Nei vienasatviras nei bet kokios vėlesnės operacijos dėl failo deskriptoriaus, kuris grąžinamas, paskambins procesui laukti. Žiūrėkite taip pat ir FIFO (vadinamųjų vamzdžių) tvarkymąFIFO(4). Šis režimas neturi turėti įtakos failams, išskyrus FIFO.
O_SYNC
Failas atidarytas sinchroniniam I / O. Bet koksparašykS dėl gauto failo deskriptoriaus blokuoja skambinimo procesą, kol duomenys fiziškai bus įrašyti į pagrindinę aparatinę įrangą. Žiūrėkite toliau pateiktus APRIBOJIMUS.
O_NOFOLLOW
Jei pathname yra simbolinė nuoroda, tada atviras nepavyksta. Tai yra "FreeBSD" plėtinys, kuris buvo įtrauktas į "Linux" versiją 2.1.126. Ankstesniuose pietų pavadinimuose esančių simbolių nuorodų vis tiek bus laikomasi. Antraštės iš glibc 2.0.100 ir vėliau apima šios vėliavos apibrėžimą; branduoliai prieš 2.1.126 ignoruos jį, jei bus naudojami .
O_DIRECTORY
Jei pathname nėra aplankas, todėl atidaryti gali nepavykti. Ši vėliava yra specifinė "Linux", ir ji buvo įtraukta į branduolio versiją 2.1.126, kad būtų išvengta užblokuotų paslaugų problemų, jeiopendir(3) yra iškviestas į FIFO arba juostinį įrenginį, tačiau neturėtų būti naudojamas už jo neįgyvendinimasopendir.
O_DIRECT
Pabandykite sumažinti įterpimo / išvesties cache poveikį iš šio failo ir iš jo. Apskritai tai sumažins našumą, tačiau tai naudinga ypatingomis situacijomis, pavyzdžiui, kai programos atlieka savo spartinimą. Failo I / O atliekama tiesiai į / iš vartotojo erdvės buferių. I / O yra sinchronizuotas, t. Y. Baigus darbą skaityti(2) arbaparašyk(2) sistemos skambutis, garantuojama, kad duomenys bus perkelti. Perdavimo dydžiai ir naudotojo buferio išlyginimas ir failų išlyginimas turi būti daugialypis iš failų sistemos loginio bloko dydžio.Ši vėliava palaikoma daugybėje Unix panašių sistemų; parama buvo pridėta Linux pagal branduolio versiją 2.4.10.Semantiniu požiūriu panaši sąsaja blokiniams įrenginiams aprašytažaliavinis(8). O_ASYNC Sukurkite signalą (SIGIO pagal nutylėjimą, bet jį galima pakeisti perfcntl(2)), kai šio failo deskriptoriaus įvestis arba išvestis tampa įmanomi. Ši funkcija galima tik terminalams, pseudo terminams ir lizdams. Pamatytifcntl(2). O_LARGEFILE 32 bitų sistemose, palaikančiose didelių failų sistemą, leidžiama atidaryti failus, kurių dydžiai negali būti rodomi 31 bitų. Kai kurias iš šių neprivalomų vėliavų galite pakeisti naudojantfcntl po to, kai byla buvo atidaryta. Argumentas režimas nurodo leidimus naudoti, jei sukurtas naujas failas. Tai yra pakeista procesoumask įprastu būdu: sukurto failo leidimai yra(režimas & ~ umask). Atminkite, kad šis režimas taikomas tik būsimiems naujai sukurto failo prieigose; asatvirasskambutis, kuris sukuria tik skaitomą failą, gali grąžinti skaitymo / įrašymo failo deskriptorių. Numatomos tokios simbolinės konstantos režimas : S_IRWXU 00700 naudotojas (failo savininkas) perskaitė, rašo ir vykdo leidimą S_IRUSR (S_IREAD) 00400 naudotojas turi skaityti leidimą S_IWUSR (S_IWRITE) 00200 vartotojas turi rašymo leidimą S_IXUSR (S_IEXEC) 00100 naudotojas turi vykdyti leidimą S_IRWXG 00070 grupė skaityti, rašyti ir vykdyti leidimą S_IRGRP 00040 grupė turi leidimą skaityti S_IWGRP 00020 grupė turi rašymo leidimą S_IXGRP 00010 grupė turi vykdyti leidimą S_IRWXO 00007 kiti skaitė, rašo ir atlieka leidimą S_IROTH 00004 kiti skaito leidimą S_IWOTH 00002 kiti turi rašymo leidimą S_IXOTH 00001 kiti vykdo leidimą režimas turi būti nurodyta, kadaO_CREAT yra vėliavos , ir ignoruojamas kitaip. creat yra lygiavertisatviras su vėliavos lygusO_CREAT | O_WRONLY | O_TRUNC. GRĄŽINIMO VERTĖ atviras ircreat grąžinti naują failo deskriptorių arba -1 jei įvyko klaida (tokiu atveju errno yra tinkamai nustatytas). Prisimink taiatviras gali atidaryti prietaiso specialius failus, betcreat Negaliu jų kurti - naudokiteMknod(2). Įjungta NFS failų sistema su UID atvaizdavimuatviras gali grąžinti failo deskriptorių, bet pvz. skaityti(2) prašymai yra atmestiniEACCES. Taip yra todėl, kad klientas atliekaatviras patikrinus leidimus, tačiau serveris atlieka UID atvaizdavimą, kai prašo skaityti ir rašyti. Jei failas yra naujai sukurtas, jo atime, ctime, mtime laukai nustatomi pagal dabartinį laiką, todėl yra tėvų aplanko ctime ir mtime laukai. Priešingu atveju, jei failas yra pakeistas dėl vėliavos O_TRUNC, jo laukai ctime ir mtime yra nustatyti pagal dabartinį laiką. EEXIST pathname jau egzistuoja irO_CREAT irO_EXCL buvo naudojami. EISDIR pathname nurodo katalogą ir prieigos prašoma dalyvauti raštu (tai yraO_WRONLY arbaO_RDWR yra nustatytas). EACCES Prašoma prieiga prie failo neleidžiama arba viena iš katalogų pathname neleido paieškos (vykdyti) leidimo arba failo dar nebuvo, ir rašyti prieigą prie tėvų aplanko neleidžiama. ENAMETOOLONG pathname buvo per ilgas. ENOENT O_CREAT nėra nustatytas ir pavadinto failo neegzistuoja. Arba katalogo komponentas pathname Neegzistuoja arba yra bangos simbolinė nuoroda. ENOTDIR Komponentas, naudojamas kaip kataloge pathname iš tikrųjų nėra aplankas, arbaO_DIRECTORYbuvo nurodyta ir pathname nebuvo aplankas. ENXIO O_NONBLOCK | O_WRONLY yra nustatytas, pavadintas failas yra FIFO, o ne procesas, kurio failas yra atidarytas skaitymui. Arba failas yra specialus failo įrenginys ir nėra atitinkamo įrenginio. ENODEV pathname reiškia konkretaus įrenginio failą ir nėra atitinkamo įrenginio. (Tai Linux branduolio klaida - šioje situacijoje ENXIO turi būti grąžinta.) EROFS pathname nurodo failą tik skaitymo byloje ir prašyti rašymo prieigos. ETXTBSY pathname reiškia vykdomąjį vaizdą, kuris šiuo metu yra vykdomas, ir prašoma rašyti. EFAULT pathname taškai už jūsų prieinamos adreso vietos. ELOOP Sprendžiant susidarė per daug simbolinių nuorodų pathname , arbaO_NOFOLLOW buvo nurodyta bet pathname buvo simbolinė nuoroda. ENOSPC pathname buvo sukurta, bet įrenginys, kuriame yra pathname nėra vietos naujam failui. ENOMEM Nepakanka branduolio atminties. EMFILE Procesas jau turi maksimalų failų skaičių. ENFILE Buvo pasiektas bendras sistemoje atidarytų failų skaičius. SVr4, SVID, POSIX, X / OPEN, BSD 4.3O_NOFOLLOW irO_DIRECTORY vėliavos yra konkrečios Linux. Gali reikėti apibrėžti_GNU_SOURCE makro nustatyti jų apibrėžimus. Protokole, kuriame veikia NFS, yra daugybė problemų, be kita koO_SYNC irO_NDELAY. POSIX pateikia tris skirtingus sinchronizuotus I / O variantus, atitinkančius vėliavosO_SYNC , O_DSYNC ir O_RSYNC. Šiuo metu (2.1.130) visi jie yra sinonimai pagal Linux. Klaidos
Atitinka
Apribojimai












