Синопсис
#инцлуде
Опис
Тхеопен () системски позив линук наредба се користи за претварање путне датотеке у дескриптор датотеке (мали, не-негативни цијели број за кориштење у наредним И / О као што је са читати, пиши, итд.). Када је позив успешан, дескриптор датотеке се враћа са најнижим дескриптором датотеке који тренутно није отворен за процес. Овај позив креира нову отворену датотеку, која се не дели са било којим другим процесом. (Али дељени отворени фајлови могу настати прековилица(2) системски позив.) Нови дескриптор датотеке ће остати отворен преко екец функција (погледајтефцнтл(2)). Смјена датотеке је подешена на почетак датотеке.
Параметар заставе је један одО_РДОНЛИ, О_ВРОНЛИ илиО_РДВР који захтевају отварање датотеке само за читање, само за писање или читање / писање, односно битвисе- или 'д са нула или више од следећег:
О_ЦРЕАТ
Ако датотека не постоји, биће креиран. Власник (ИД корисника) датотеке је постављен на ефективан кориснички ИД процеса. Власништво групе (ИД групе) је постављено или на ефективну идентификациону групу процеса или на идентификациону групу матичног директоријума (зависно од типа датотечног система и опција монтирања и начина родитељског директоријума, погледајте нпр. Моунт Опције бсдгроупс и сисвгроупс датотечног система ект2, како је описано умоунт(8)).
О_ЕКСЦЛ
Када се користиО_ЦРЕАТ, ако датотека већ постоји, то је грешка иотворен ће пасти. У том контексту постоји симболичка веза, без обзира на то гдје се она указује.О_ЕКСЦЛ је прекинут на НФС датотечним системима, програми који се ослањају на њега за обављање задатака закључавања садрже услов трке. Решење за закључавање блокирања атомске датотеке помоћу лоцкфиле-а је стварање јединствене датотеке на истом фс-у (нпр., Уграђивање имена хоста и пид-а), користећи линк (2) да направите везу са лоцкфиле-ом. Аколинк() враћа 0, закључавање је успјешно. У супротном, користите стат(2) на јединственој датотеци да провери да ли је број повезивања повећан на 2, у ком случају је брава такође успешна.
О_НОЦТТИ
Ако патхнаме односи се на терминал уређај --- погледајтетти(4) --- то неће постати контролни терминал процеса, чак и ако процес нема.
О_ТРУНЦ
Ако датотека већ постоји и представља редовну датотеку, а отворени режим дозвољава писање (тј., О_РДВР или О_ВРОНЛИ) биће скраћено до дужине 0. Ако је датотека датотека ФИФО или терминалног уређаја, ознака О_ТРУНЦ се игнорише. У супротном, ефекат О_ТРУНЦ-а није неодређен. (На многим верзијама Линука то ће бити занемарено, ау другим верзијама ће вратити грешку.)
О_АППЕНД
Датотека се отвара у додирном режиму. Пре свакогпиши, показивач датотеке се налази на крају датотеке, као да је салсеек. О_АППЕНД може довести до оштећених датотека на НФС датотечним системима ако више од једног процеса додају податке у датотеку одједном. То је зато што НФС не подржава додавање датотеке, тако да клијентско језгро мора да га симулира, што се не може учинити без тркачког стања.
О_НОНБЛОЦК илиО_НДЕЛАИ
Када је могуће, датотека се отвара у не-блокирајућем режиму. Ни тоотворен нити било које касније операције у датотеци дескриптора који се враћа, проузрокује да процес позивања чека. За поступање са ФИФО (названим цевима), такође погледајтеФифо(4). Овај режим не мора имати ефекта на датотеке осим ФИФО.
О_СИНЦ
Датотека је отворена за синхроне И / О. Било којипишис на резултираном дескриптору датотеке ће блокирати процес позивања све док подаци нису физички уписани у основни хардвер. Међутим, погледајте одељак РЕСТРИЦТИОНС.
О_НОФОЛЛОВ
Ако патхнаме је симболична веза, онда отворена не успева. Ово је додатак за ФрееБСД, који је додат у Линук у верзији 2.1.126. И даље ће се пратити симболичне везе у ранијим компонентама имена пута. Главе из глибц 2.0.100 и касније укључују дефиницију ове заставе; кернели пре 2.1.126 ће их игнорисати ако се користе .
О_ДИРЕЦТОРИ
Ако патхнаме није директоријум, проузрокује отвореност за неуспјех. Ова застава је специфична за Линук и додата је у верзију 2.1.126 кернела како би се избегле проблеми са порицањем услугеопендир(3) се позива на ФИФО или траку, али се не сме користити изван имплементацијеопендир.
О_ДИРЕЦТ
Покушајте да смањите кеш ефекте И / О-а у ову датотеку. Уопштено, то ће деградирати перформансе, али је корисно у посебним ситуацијама, као што је када апликације врше сопствени кеширање. Филе И / О се врши директно у / из корисничких бафера. И / О је синхрони, тј. По завршетку читати(2) илипиши(2) системски позив, подаци су гарантовани пренети. Величина преноса и поравнање корисничког бафера и оффсет фајла морају бити вишеструки од величине логичког блока датотечног система.Ова застава је подржана на више Уник-лике система; подршка је додата под Линук у кернел верзији 2.4.10.Семантички сличан интерфејс за блок уређаје је описан усирово(8). О_АСИНЦ Генеришите сигнал (СИГИО по подразумеваној вредности, али се то може променити путемфцнтл(2)) када је улаз или излаз постао могућ за овај дескриптор датотеке. Ова функција је доступна само за терминале, псеудо-терминале и утичнице. Видишфцнтл(2) за даље детаље. О_ЛАРГЕФИЛЕ На 32-битним системима који подржавају систем великих фајлова, дозволите фајлове чије величине не могу бити представљене у 31 бит. Неке од ових опционих застава могу се изменити користећифцнтл након што је датотека отворена. Аргумент мод специфицира дозволе за употребу у случају креирања нове датотеке. То је модификовано процесомумаск на уобичајени начин: дозволе креиране датотеке су(режим и ~ умаск). Имајте на уму да се овај режим односи само на будуће приступе новоформираног фајла; тхеотворенпозив који креира датотеку само за читање можда може вратити дескриптор датотеке за читање / писање. Обезбеђене су следеће симболичке константе мод : С_ИРВКСУ 00700 корисник (власник датотеке) је прочитао, писао и извршио дозволу С_ИРУСР (С_ИРЕАД) Корисник 00400 има одобрење за читање С_ИВУСР (С_ИВРИТЕ) 00200 корисник има дозволу за писање С_ИКСУСР (С_ИЕКСЕЦ) 00100 корисник има дозволу за извршење С_ИРВКСГ Група 00070 је читала, писала и извршила дозволу С_ИРГРП 00040 група има дозволу за читање С_ИВГРП Група 00020 има дозволу за писање С_ИКСГРП Група 00010 има дозволу за извршење С_ИРВКСО 00007 други су прочитали, писали и извршили дозволу С_ИРОТХ 00004 други имају дозволу за читање С_ИВОТХ Други имају дозволу за писање С_ИКСОТХ Други имају извршну дозволу мод мора се навести кадаО_ЦРЕАТ је у заставе , и занемарује се на други начин. креат је еквивалентно саотворен са заставе једнакоО_ЦРЕАТ | О_ВРОНЛИ | О_ТРУНЦ. ПОВРАТНА ВРИЈЕДНОСТ отворен икреат вратите нови дескриптор датотеке или -1 ако је дошло до грешке (у том случају, еррно постављен је на одговарајући начин). Напоменути даотворен могу отворити специјалне датотеке уређаја, аликреат не могу их створити - користитимкнод(2). На НФС датотечним системима са омогућеним УИД мапирањем,отворен може вратити дескриптор датотеке, нпр. читати(2) захтеви су одбијениЕАЦЦЕС. То је зато што клијент обављаотворен проверавајући дозволе, али УИД мапирање врши сервер на захтев за читање и писање. Ако је датотека новонастала, њене атиме, цтиме, мтиме поља су подешене на тренутно време, а такође су и цтиме и мтиме поља матичног директоријума. У супротном, ако се датотека измени због заставице О_ТРУНЦ, поља цтиме и мтиме су подешена на тренутно време. ЕЕКСИСТ патхнаме већ постоји иО_ЦРЕАТ иО_ЕКСЦЛ су коришћени. ЕИСДИР патхнаме односи се на директоријум и тражени приступ укључује писање (то јест,О_ВРОНЛИ илиО_РДВР је постављено). ЕАЦЦЕС Тражени приступ датотеци није дозвољен или један од директоријума патхнаме није дозволила дозволу за претраживање (изврши), или датотека још није постојала и приступ писању родитељског именика није дозвољен. ЕНАМЕТООЛОНГ патхнаме био је предугачак. ЕНОЕНТ О_ЦРЕАТ није подешен и именована датотека не постоји. Или, компонента каталога у патхнаме не постоји или је симболична везна веза. ЕНОТДИР Компонента која се користи као директориј патхнаме заправо није директоријум, илиО_ДИРЕЦТОРИје прецизиран и патхнаме није био директоријум. ЕНКСИО О_НОНБЛОЦК | О_ВРОНЛИ је подешен, именована датотека је ФИФО и ниједан процес није отворен за читање. Или, датотека је специјална датотека уређаја и нема одговарајућег уређаја. ЕНОДЕВ патхнаме односи се на посебну датотеку уређаја и не постоји одговарајући уређај. (Ово је грешка Линук кернела - у овој ситуацији ЕНКСИО мора бити враћена.) ЕРОФС патхнаме односи се на датотеку у датотечном систему само за читање и захтеван је приступ писању. ЕТКСТБСИ патхнаме односи се на извршну слику која се тренутно извршава и захтева се уписивање. ЕФАУЛТ патхнаме тачке изван вашег приступног адресног простора. ЕЛООП У рјешавању је дошло до превише симболичких веза патхнаме , илиО_НОФОЛЛОВ је прецизиран, али патхнаме била је симболична веза. ЕНОСПЦ патхнаме требало је направити, али уређај садржи патхнаме нема места за нову датотеку. ЕНОМЕМ Доступна је недовољна меморија кернела. ЕМФИЛЕ Процес већ има максималан број отворених датотека. ЕНФИЛЕ Достигнута је граница укупног броја датотека отворених на систему. СВр4, СВИД, ПОСИКС, Кс / ОПЕН, БСД 4.3О_НОФОЛЛОВ иО_ДИРЕЦТОРИ Заставе су специфичне за Линук. Можда ће се морати дефинисати_ГНУ_СОУРЦЕ макро да би добили своје дефиниције. У протоколу који лежи у НФС-у постоји много неизвјесности, погађајући између осталогО_СИНЦ иО_НДЕЛАИ. ПОСИКС обезбеђује три различите варијанте синхронизованог И / О, који одговарају ознакамаО_СИНЦ , О_ДСИНЦ и О_РСИНЦ. Тренутно су (2.1.130) сви они синонимни под Линуком. Грешке
У складу са
Ограничења













