Кіріспе

Көптеген файлдық жүйелер үшін бағдарлама файлдық жүйеде файлға қол жеткізуді жүйелік `open` шақыру арқылы бастайды. Бұл файлмен байланысты ресурстарды бөліп береді (файл дескрипторы) және процесс сол файлға сілтеме жасау үшін қолданатын тұтқаны қайтарады. Кейбір жағдайларда, файлға алғашқы қол жеткізу оны ашуды жүзеге асырады. Бір файл бірнеше процесспен бір уақытта, тіпті бір процесспен де ашылуы мүмкін, нәтижесінде бір файл үшін бірнеше файл дескрипторлары пайда болады; бұл файлдың ұйымдастырылуына және файлдық жүйеге байланысты. Файл дескрипторларымен жасалатын операциялар, мысалы, файл көрсеткішін жылжыту немесе оны жабу, тәуелсіз болады – олар сол файлдың басқа дескрипторларына әсер етпейді. Файлдағы жазу сияқты операциялар басқа дескрипторлар арқылы көрілуі мүмкін: кейінірек оқылғанда жаңа жазылған деректер оқылады. `Open` шақырылымы кезінде файлдық жүйе буферлер үшін жадты бөлуі немесе алғашқы операцияға дейін күтуі мүмкін. Файлдың абсолютті жолы анықталады. Бұл қашықтағы хостқа қосылуды және операторға алынып қойылатын құрал қажет екенін хабарлауды қамтиды. Бұл байланыс құрылғысын инициализациялауды қамтиды. Осы кезде хост немесе құрал қолжетімді болмаса, қате қайтарылуы мүмкін. Файл жүйесіндегі кеміндегі каталогқа алғашқы қол жеткізу орындалады. Егер жолдың жоғары деңгейдегі компоненттері (директориялар) табылмайтын болса немесе оларға қол жеткізе алмаса, әдетте қате қайтарылады. Егер файл болуы керек болса, бірақ ол жоқ немесе файл қазірдің өзінде болмауы керек болса, бірақ ол бар болса, қате қайтарылады. Егер файл бар деп күтілсе және ол бар болса, файлға қол жеткізу, файлдың метадеректерінде немесе қол жеткізуді бақылау тізімінде көрсетілген рұқсаттармен шектелгендей, сұралған операциялардың түріне сәйкес тексеріледі. Бұл әдетте қосымша файлдық жүйеге кіруді талап етеді, бірақ кейбір файлдық жүйелерде метабелгілер каталог құрылымының бөлігі болуы мүмкін. Егер файл құрылып жатса, файлдық жүйе файлдық жүйенің мүмкіндіктеріне байланысты бастапқы сақтау көлемін немесе нақты көлемді бөлуі мүмкін. Егер бұл сәтсіз аяқталса, қате қайтарылады. Каталогты жаңа жазбамен жаңарту орындалуы мүмкін немесе ол жабылу орындалғанға дейін кейінге қалдырылуы мүмкін. `Open` шақырылымы кезінде пайда болатын басқа да түрлі қателерге каталогты жаңарту қателері, рұқсатсыз бірнеше қосылымдар, құрал қателері, байланыс желісінің қателері және құрылғы қателері жатады. Қайтарылатын мән әрқашан тексерілуі керек және қатеге қатысты нақты шаралар қолданылуы керек. Көптеген жағдайларда, бағдарламалау тіліне тән орындалу уақыты кітапханасы файлға байланысты орындалу уақыты кітапханасы құрылымын инициализациялауды қоса алғанда, қосымша әрекеттерді орындай алады. Файл енді қажет болмаған кезде, бағдарлама оны жабуы керек. Бұл орындалу уақыты кітапханасы мен файлдық жүйе буферлерін физикалық құралға жаңартуға және эксклюзивті пайдалану қажет болған жағдайда басқа процестерге деректерге қол жеткізуге мүмкіндік береді. Кейбір орындалу уақыты кітапханалары бағдарлама орындалу уақытының шығысын шақырса файлды жабады. Кейбір файлдық жүйелер бағдарлама тоқтаған жағдайда қажетті операцияларды орындай алады. Бұл екеуінің де ядро немесе қуат көзінің ақаулығы жағдайында орын алуы екіталай. Бұл файлдық жүйенің зақымдануына әкелуі мүмкін, бұл үшін артықшылықты және ұзақ файлдық жүйе утилиталарын орындау қажет, бұл кезде бүкіл файлдық жүйе қолжетімсіз болуы мүмкін.

жол

Ашуға тиіс файлдың атауы. Ол файлдың қай жерде, қандай файлдық жүйеде орналасқанын (немесе жасалуын қажет екенін) анықтайтын файл жолын қамтиды. openat функциясы салыстырмалы жол күтеді.