Kopsavilkums
#include
Apraksts
Theatvērt () sistēmas izsaukums linux komandu izmanto, lai pārvērstu pathname par faila deskriptoru (neliels, ne-negatīvs vesels skaitlis, ko izmanto turpmākajā I / O kā ar lasīt, rakstīt, utt.). Kad zvans ir veiksmīgs, faila deskriptors atgriezās, tas ir viszemākais faila deskriptors, kas šobrīd procesā nav atvērts. Šis zvans izveido jaunu atvērtu failu, nevis kopīgots ar citiem procesiem. (Taču koplietotie atvērtie faili var rasties, izmantojotdakša(2) sistēmas izsaukums.) Jaunais failu deskriptors ir iestatīts palikt atvērts pāri exec funkcijām (skfcntl(2)). Faila nobīde ir iestatīta uz faila sākumu.
Parametrs karogi ir viens noO_RDONLY, O_WRONLY vaiO_RDWR kas pieprasa atvērt failu tikai lasīšanai, tikai rakstīšanai vai lasīšanai / rakstīšanai, vai "d ar nulli vai vairāk no šādiem:
O_CREAT
Ja fails nepastāv, tas tiks izveidots. Faila īpašnieks (lietotāja ID) ir iestatīts uz procesa efektīvu lietotāja ID. Grupas īpašumtiesības (grupas ID) tiek iestatītas vai nu uz procesa faktisko grupas ID vai mātes kataloga grupas ID (atkarībā no failu sistēmas tipa un piestiprināšanas iespējām un mātes direktorijas režīma, skatīt, piemēram, mount iespējas bsdgroups un sysvgroups no ext2 failu sistēmas, kā aprakstītsmontēt(8)).
O_EXCL
Lietots kopā arO_CREAT, ja fails jau pastāv, tas ir kļūda unatvērts neizdosies. Šajā kontekstā pastāv simboliska saite neatkarīgi no tā, kur tā norāda.O_EXCL ir sadalīta NFS failu sistēmās, programmām, kas balstās uz to, lai veiktu bloķēšanas uzdevumus, tiks noteikts sacensību stāvoklis. Atmiņas faila bloķēšanas veikšanai ar lockfile ir jāizveido unikāls fails ar vienādu fs (piem., Iekļaujot saimniekdatora nosaukumu un pid), izmantojiet saiti (2), lai izveidotu saiti uz bloķēšanas fails. Jasaite () atgriež 0, atslēga ir veiksmīga. Pretējā gadījumā izmantojiet stat(2) unikālajā failā, lai pārbaudītu, vai tā saišu skaits ir palielinājies līdz 2, un šādā gadījumā arī atslēga ir veiksmīga.
O_NOCTTY
Ja pathname attiecas uz gala ierīci --- sktty(4) --- tas nekļūst par procesa vadības terminālu, pat ja procesam nav tā.
O_TRUNC
Ja fails jau eksistē un ir regulārs fails, un atvērtais režīms ļauj rakstīt (t.i., tas ir O_RDWR vai O_WRONLY), tas tiks saīsināts līdz 0. garumam. Ja fails ir FIFO vai termināla ierīces fails, O_TRUNC karogs tiek ignorēts. Pretējā gadījumā O_TRUNC ietekme nav precīza. (Daudzās Linux versijās tas tiks ignorēts, citās versijās tiks atgriezta kļūda.)
O_APPEND
Fails tiek atvērts pievienošanas režīmā. Pirms katrarakstīt, faila rādītājs ir novietots faila beigās, it kā arlseek. O_APPEND var novest pie bojātiem failiem NFS failu sistēmās, ja vairākos procesos vienlaikus failā tiek pievienoti dati. Tas ir tāpēc, ka NFS neatbalsta faila pievienošanu, tāpēc klienta kodolam ir jāmodulē tā, ko nevar izdarīt bez sacensību stāvokļa.
O_NONBLOCK vaiO_NDELAY
Ja iespējams, fails tiek atvērts bez bloķēšanas režīmā. Neviena noatvērts ne arī vēlākas darbības faila deskriptorā, kas tiek atgriezts, izraisīs izsaucēja procesu gaidīšana. FIFO apstrādei (nosauktajām caurulēm) skatiet arīFIFO(4). Šis režīms nedrīkst ietekmēt failus, kas nav FIFO.
O_SYNC
Fails ir atvērts sinhronai I / O. JebkurarakstītRezultātā faila deskriptors bloķē zvanīšanas procesu, līdz dati tiek fiziski rakstīti pamata aparatūrai. Tomēr skatiet sadaļu IEROBEŽOJUMI.
O_NOFOLLOW
Ja pathname ir simboliska saite, tad atvēršana neizdodas. Šis ir FreeBSD paplašinājums, kas tika pievienots Linux versijai 2.1.126. Turpmāk tiks ievērotas simbola saites agrāk pazīmju sastāvdaļās. Glibc 2.0.100 un jaunākajās virsrakstos ir iekļauts šī karoga definīcija; kodoli pirms 2.1.126 ignorēs to, ja tiks izmantots .
O_DIRECTORY
Ja pathname nav direktorija, izraisiet, lai atvērtu neizdoties. Šis karodziņš ir specifisks Linux, un tas tika pievienots kodola versijā 2.1.126, lai izvairītos no pakalpojuma problēmām, jaopendirs(3) tiek izsaukta uz FIFO vai lentes ierīci, bet to nedrīkst izmantot ārpusopendirs.
O_DIRECT
Centieties samazināt ieejas / izejas kešatmiņas efektus uz un no šī faila. Parasti tas samazinās veiktspēju, taču tas ir noderīgs īpašās situācijās, piemēram, kad lietojumprogrammas veic savu caching. Failu I / O tiek veikts tieši uz / no lietotāja telpas buferiem. I / O ir sinhrona, t.i., aizpildot lasīt(2) vairakstīt(2) sistēmas zvans, dati tiek garantēti pārsūtīti. Pārsūtīšanas izmēri un lietotāja bufera un failu nobīde ir jāpielāgo faila sistēmas loģiskā bloka lielumam.Šis karodziņš tiek atbalstīts vairākās Unix līdzīgās sistēmās; atbalsts tika pievienots Linux kodola versijā 2.4.10.Semantiski līdzīgs interfeiss bloka ierīcēm ir aprakstītsneapstrādāts(8). O_ASYNC Izveidot signālu (SIGIO pēc noklusējuma, bet to var mainīt arfcntl(2)), kad ievades vai izvades kļūst iespējams šajā faila deskriptorā. Šī funkcija ir pieejama tikai termināļiem, pseido termināliem un kontaktligzdām. Skatītfcntl(2), lai saņemtu sīkāku informāciju. O_LARGEFILE 32 bitu sistēmās, kas atbalsta lielo failu sistēmu, atļaut atvērt failus, kuru izmērus nevar attēlot 31 biti. Dažus no šiem izvēles karogiem var mainīt, izmantojotfcntl pēc faila atvēršanas. Arguments režīms norāda atļaujas izmantot, ja tiek izveidots jauns fails. To groza ar procesa palīdzībuumask parastajā veidā: izveidotā faila atļaujas ir(režīms & ~ umask). Ievērojiet, ka šis režīms attiecas tikai uz jaunizveidotā faila nākotnes piekļuvi; theatvērtszvans, kas rada tikai lasāmu failu, var atgriezt lasīšanas / rakstīšanas faila deskriptoru. Ir paredzētas šādas simboliskās konstantes režīms : S_IRWXU 00700 lietotājs (faila īpašnieks) ir izlasījis, rakstījis un izpildījis atļauju S_IRUSR (S_IREAD) 00400 lietotājs ir lasījis atļauju S_IWUSR (S_IWRITE) 00200 lietotājam ir rakstīšanas atļauja S_IXUSR (S_IEXEC) 00100 lietotājs ir izpildīt atļauju S_IRWXG 00070 grupa ir lasījusi, rakstījusi un izpildījusi atļauju S_IRGRP 00040 grupa ir lasījusi atļauju S_IWGRP 00020 grupai ir rakstīšanas atļauja S_IXGRP 00010 grupai ir izpildes atļauja S_IRWXO 00007 citi ir lasījuši, rakstījuši un izpildījuši atļauju S_IROTH 00004 citi ir lasījuši atļauju S_IWOTH 00002 citi ir rakstīšanas atļauja S_IXOTH 00001 citi ir izpildīt atļauju režīms jānorāda, kadO_CREAT ir karogi , un pretējā gadījumā tiek ignorēts. creat ir vienāds aratvērts ar karogi vienāds arO_CREAT | O_WRONLY | O_TRUNC. ATGRIEŠANĀS VĒRTĪBA atvērts uncreat atgrieziet jauno faila deskriptoru vai -1, ja radusies kļūda (šādā gadījumā errno ir atbilstoši iestatīts). Pieraksti toatvērts var atvērt ierīces īpašos failus, betcreat nevar izveidot tos - izmantojietmknod(2) vietā. NFS failu sistēmās, kurās iespējota UID kartēšana,atvērts var atgriezt failu deskriptoru, bet, piemēram, lasīt(2) pieprasījumi ir noraidīti arEACCES. Tas ir tāpēc, ka klients veicatvērts pārbaudot atļaujas, bet serveris veic UID kartēšanu pēc lasīšanas un rakstīšanas pieprasījumiem. Ja fails ir tikko izveidots, tā atime, ctime, mtime lauki ir iestatīti uz pašreizējo laiku, un tā ir mātes kataloga lauki ctime un mtime. Pretējā gadījumā, ja fails tiek modificēts O_TRUNC karoga dēļ, tā ctime un mtime lauki ir iestatīti uz pašreizējo laiku. EEXIST pathname jau pastāv unO_CREAT unO_EXCL tika izmantoti. EISDIR pathname attiecas uz direktoriju un pieprasīto piekļuvi rakstiski (tas ir,O_WRONLY vaiO_RDWR ir iestatīts). EACCES Pieprasītā piekļuve failam nav atļauta, vai arī kāds no direktorijiem tajā ir pathname neļāva veikt meklēšanu (izpildīt), vai arī fails vēl neeksistēja, un rakstīt piekļuvi mātes katalogam nav atļauts. ENAMETOOLONG pathname bija pārāk garš. ENOENT O_CREAT nav iestatīts, un nosauktais fails neeksistē. Vai arī kataloga komponents vietnē pathname nepastāv vai tā ir simboliska saikne. ENOTDIR Komponents, ko izmanto kā direktoriju iekšā pathname patiesībā nav direktorija vaiO_DIRECTORYtika norādīts un pathname nebija direktorija. ENXIO O_NONBLOCK | O_WRONLY ir iestatīts, nosauktais fails ir FIFO un neviens process neatver datumu lasīšanai. Vai arī fails ir ierīces īpašais fails, un nav atbilstošas ierīces. ENODEV pathname attiecas uz ierīces īpašu failu un nav atbilstošas ierīces. (Šī ir Linux kodola kļūda - šai situācijā ENXIO jāatgriež.) EROFS pathname attiecas uz failu tikai lasāmā faila sistēmā un tiek pieprasīta piekļuve rakstīšanai. ETXTBSY pathname attiecas uz izpildāmu attēlu, kas pašlaik tiek izpildīts, un tiek pieprasīta piekļuve rakstīšanai. EFAULT pathname punkti ārpus jūsu pieejamās adreses vietas. ELOOP Risinot, radās pārāk daudz simbolisku saišu pathname , vaiO_NOFOLLOW tika norādīts, bet pathname bija simboliska saite. ENOSPC pathname bija jāizveido, bet ierīce satur pathname nav vietas jaunajam failam. ENOMEM Nepietiekama kernel atmiņa bija pieejama. EMFILE Procesam jau ir atvērts maksimālais failu skaits. ENFILE Ir sasniegts kopējais sistēmā atvērto failu skaits. SVR4, SVID, POSIX, X / OPEN, BSD 4.3O_NOFOLLOW unO_DIRECTORY karodziņi ir specifiski Linux. Var būt nepieciešams definēt_GNU_SOURCE makro, lai iegūtu to definīcijas. Protokolā, kas ir NFS pamatā, ir daudz nelaime, kas ietekmē cita starpāO_SYNC unO_NDELAY. POSIX piedāvā trīs dažādus sinhronizētu I / O variantus, kas atbilst karodziņiemO_SYNC , O_DSYNC un O_RSYNC. Pašlaik (2.1.130.) Visi tie ir sinonīmi saskaņā ar Linux. Kļūdas
Atbilstoši
Ierobežojumi













