Ағылшыншамен салыстырыңыз: абзацты басыңыз — түпнұсқа терезеде ашылады. Абзац астындағы EN түймесі оны мәтін ішінде көрсетеді.
Кіріспе
Көптеген файлдық жүйелер үшін бағдарлама файлдық жүйеде файлға қол жеткізуді жүйелік `open` шақыру арқылы бастайды. Бұл файлмен байланысты ресурстарды бөліп береді (файл дескрипторы) және процесс сол файлға сілтеме жасау үшін қолданатын тұтқаны қайтарады. Кейбір жағдайларда, файлға алғашқы қол жеткізу оны ашуды жүзеге асырады. Бір файл бірнеше процесспен бір уақытта, тіпті бір процесспен де ашылуы мүмкін, нәтижесінде бір файл үшін бірнеше файл дескрипторлары пайда болады; бұл файлдың ұйымдастырылуына және файлдық жүйеге байланысты. Файл дескрипторларымен жасалатын операциялар, мысалы, файл көрсеткішін жылжыту немесе оны жабу, тәуелсіз болады – олар сол файлдың басқа дескрипторларына әсер етпейді. Файлдағы жазу сияқты операциялар басқа дескрипторлар арқылы көрілуі мүмкін: кейінірек оқылғанда жаңа жазылған деректер оқылады. `Open` шақырылымы кезінде файлдық жүйе буферлер үшін жадты бөлуі немесе алғашқы операцияға дейін күтуі мүмкін. Файлдың абсолютті жолы анықталады. Бұл қашықтағы хостқа қосылуды және операторға алынып қойылатын құрал қажет екенін хабарлауды қамтиды. Бұл байланыс құрылғысын инициализациялауды қамтиды. Осы кезде хост немесе құрал қолжетімді болмаса, қате қайтарылуы мүмкін. Файл жүйесіндегі кеміндегі каталогқа алғашқы қол жеткізу орындалады. Егер жолдың жоғары деңгейдегі компоненттері (директориялар) табылмайтын болса немесе оларға қол жеткізе алмаса, әдетте қате қайтарылады. Егер файл болуы керек болса, бірақ ол жоқ немесе файл қазірдің өзінде болмауы керек болса, бірақ ол бар болса, қате қайтарылады. Егер файл бар деп күтілсе және ол бар болса, файлға қол жеткізу, файлдың метадеректерінде немесе қол жеткізуді бақылау тізімінде көрсетілген рұқсаттармен шектелгендей, сұралған операциялардың түріне сәйкес тексеріледі. Бұл әдетте қосымша файлдық жүйеге кіруді талап етеді, бірақ кейбір файлдық жүйелерде метабелгілер каталог құрылымының бөлігі болуы мүмкін. Егер файл құрылып жатса, файлдық жүйе файлдық жүйенің мүмкіндіктеріне байланысты бастапқы сақтау көлемін немесе нақты көлемді бөлуі мүмкін. Егер бұл сәтсіз аяқталса, қате қайтарылады. Каталогты жаңа жазбамен жаңарту орындалуы мүмкін немесе ол жабылу орындалғанға дейін кейінге қалдырылуы мүмкін. `Open` шақырылымы кезінде пайда болатын басқа да түрлі қателерге каталогты жаңарту қателері, рұқсатсыз бірнеше қосылымдар, құрал қателері, байланыс желісінің қателері және құрылғы қателері жатады. Қайтарылатын мән әрқашан тексерілуі керек және қатеге қатысты нақты шаралар қолданылуы керек. Көптеген жағдайларда, бағдарламалау тіліне тән орындалу уақыты кітапханасы файлға байланысты орындалу уақыты кітапханасы құрылымын инициализациялауды қоса алғанда, қосымша әрекеттерді орындай алады. Файл енді қажет болмаған кезде, бағдарлама оны жабуы керек. Бұл орындалу уақыты кітапханасы мен файлдық жүйе буферлерін физикалық құралға жаңартуға және эксклюзивті пайдалану қажет болған жағдайда басқа процестерге деректерге қол жеткізуге мүмкіндік береді. Кейбір орындалу уақыты кітапханалары бағдарлама орындалу уақытының шығысын шақырса файлды жабады. Кейбір файлдық жүйелер бағдарлама тоқтаған жағдайда қажетті операцияларды орындай алады. Бұл екеуінің де ядро немесе қуат көзінің ақаулығы жағдайында орын алуы екіталай. Бұл файлдық жүйенің зақымдануына әкелуі мүмкін, бұл үшін артықшылықты және ұзақ файлдық жүйе утилиталарын орындау қажет, бұл кезде бүкіл файлдық жүйе қолжетімсіз болуы мүмкін.
For most file systems, a program initializes access to a file in a file system using the open system call. This allocates resources associated to the file (the file descriptor), and returns a handle that the process will use to refer to that file. In some cases the open is performed by the first access. The same file may be opened simultaneously by several processes, and even by the same process, resulting in several file descriptors for the same file; depending on the file organization and filesystem. Operations on the descriptors such as moving the file pointer or closing it are independentthey do not affect other descriptors for the same file. Operations on the file, such as a write, can be seen by operations on the other descriptors: a later read can read the newly written data. During the open, the filesystem may allocate memory for buffers, or it may wait until the first operation. The absolute file path is resolved. This may include connecting to a remote host and notifying an operator that a removable medium is required. It may include the initialization of a communication device. At this point an error may be returned if the host or medium is not available. The first access to at least the directory within the filesystem is performed. An error will usually be returned if the higher level components of the path (directories) cannot be located or accessed. An error will be returned if the file is expected to exist and it does not or if the file should not already exist and it does. If the file is expected to exist and it does, the file access, as restricted by permission flags within the file meta data or access control list, is validated against the requested type of operations. This usually requires an additional filesystem access although in some filesystems meta flags may be part of the directory structure. If the file is being created, the filesystem may allocate the default initial amount of storage or a specified amount depending on the file system capabilities. If this fails an error will be returned. Updating the directory with the new entry may be performed or it may be delayed until the close is performed. Various other errors which may occur during the open include directory update failures, un permitted multiple connections, media failures, communication link failures and device failures. The return value must always be examined and an error specific action taken. In many cases programming language specific run time library opens may perform additional actions including initializing a run time library structure related to the file. As soon as a file is no longer needed, the program should close it. This will cause run time library and filesystem buffers to be updated to the physical media and permit other processes to access the data if exclusive use had been required. Some run time libraries may close a file if the program calls the run time exit. Some filesystems may perform the necessary operations if the program terminates. Neither of these is likely to take place in the event of a kernel or power failure. This can cause damaged filesystem structures requiring the running of privileged and lengthy filesystem utilities during which the entire filesystem may be inaccessible.
жол
Ашуға тиіс файлдың атауы. Ол файлдың қай жерде, қандай файлдық жүйеде орналасқанын (немесе жасалуын қажет екенін) анықтайтын файл жолын қамтиды. openat функциясы салыстырмалы жол күтеді.
The name of the file to open. It includes the file path defining where, in which file system, the file is found (or should be created). openat expects a relative path.