Ашық (жүйелік қоңырау) - open (system call) - Wikipedia

Көпшілігінде файлдық жүйелер, а бағдарлама а қол жетімділікті инициализациялайды файл ішінде файлдық жүйе пайдаланып ашық жүйелік қоңырау. Бұл файлға байланысты ресурстарды бөледі ( файл дескрипторы ) және қайтарады тұтқа бұл процесс сол файлға сілтеме жасау үшін қолданылады. Кейбір жағдайларда бірінші қол жетімділік арқылы жүзеге асырылады.

Бір файлды бір уақытта бірнеше процестер ашуы мүмкін, тіпті бір процесс нәтижесінде бір файл үшін бірнеше файл дескрипторлары пайда болады; файлдық жүйеге және файлдық жүйеге байланысты. Жылжыту сияқты дескрипторлармен жұмыс файл сілтемесі немесе оны жабу тәуелсіз - олар бір файлдың басқа дескрипторларына әсер етпейді. Файлдағы әрекеттер, мысалы жазу, басқа дескрипторлардағы операциялар арқылы көруге болады: кейінірек оқылған жаңа жазылған деректерді оқи алады.

Кезінде ашық, файлдық жүйе үшін жад бөлуі мүмкін буферлер немесе ол бірінші операцияны күте алады.

The файлдың абсолютті жолы шешілді. Бұл қашықтағы хостқа қосылуды және операторға алынбалы құрал қажет екенін ескертуді қамтуы мүмкін. Ол байланыс құрылғысын инициализациялауды қамтуы мүмкін. Осы кезде қате қайтарылуы мүмкін, егер хост немесе орта болмаса. Кем дегенде, бірінші қол жетімділік анықтамалық файлдық жүйеде орындалады. Қате, егер жолдың жоғары деңгей компоненттері болса қайтарылады (анықтамалықтар ) табу мүмкін емес. Қате қайтарылады, егер файл болады деп күтілсе және ол жоқ болса немесе ол жоқ болса және ол жоқ болса.

Егер файл болады деп күтілсе және ол болса, шектеулер бойынша файлға қол жетімділік рұқсат жалаулары файл ішінде мета деректер немесе қол жетімділікті басқару тізімі, сұралған операция түріне сәйкес тексеріледі. Бұл, әдетте, қосымша файлдық жүйеге кіруді талап етеді, бірақ кейбір файлдық жүйелерде мета жалаулар каталог құрылымының бөлігі болуы мүмкін.

Егер файл жасалып жатса, файлдық жүйе файлдық жүйенің мүмкіндігіне байланысты сақтаудың әдепкі бастапқы көлемін немесе белгілі бір көлемді бөле алады. Егер бұл орындалмаса, қате қайтарылады. Каталогты жаңа жазбамен жаңарту орындалуы мүмкін немесе ол дейін қалдырылуы мүмкін жабық орындалады.

Ашық кезде орын алуы мүмкін басқа да қателіктерге каталогты жаңарту, рұқсат етілмеген бірнеше қосылыстар, медиа ақаулар, байланыс сілтемелері мен құрылғы ақаулары жатады.

Қайтарылатын мән әрдайым тексеріліп, қате бойынша нақты әрекет қажет.

Көп жағдайда жұмыс уақытының кітапханасын ашатын бағдарламалау тіліне қосымша әрекеттерді орындай алады, соның ішінде файлға қатысты кітапхана құрылымының инициализациясы болады.

Файл қажет болмай тұрғанда, бағдарлама оны жауып тастауы керек. Бұл жұмыс уақыты кітапханасы мен файлдық жүйенің буферлерінің физикалық медиада жаңартылуына әкеледі және егер эксклюзивті пайдалану қажет болса, басқа процестерге деректерге қол жеткізуге мүмкіндік береді. Бағдарлама жұмыс уақытының шығуын шақырса, кейбір жұмыс уақытының кітапханалары файлды жауып тастауы мүмкін. Бағдарлама аяқталса, кейбір файлдық жүйелер қажетті әрекеттерді орындай алады. Олардың екеуі де ядро ​​немесе электр қуаты өшкен жағдайда орын алмауы мүмкін. Бұл файл жүйесінің толықтай қол жетімсіз болуы мүмкін артықшылықты және ұзақ файлдық жүйенің утилиталарын іске қосуды талап ететін файл жүйесінің бұзылуына әкелуі мүмкін.

ашық дәлелдер

  1. The жол аты файлға,
  2. Файлда сұралған рұқсат түрі (оқу, жазу, қосу және т.б.),
  3. Файлдың бастапқы рұқсаты деп аталатын үшінші аргументтің көмегімен сұралады режимі. Бұл аргумент жаңа файл жасалған кезде ғана маңызды.

Файлды қолданғаннан кейін процесс файлды пайдаланып жабылуы керек жабық қоңырау, ол файлдың дескрипторын жабуға мәжбүр етеді. Кейбір файлдық жүйелер файлды шығаруға рұқсат беруді қамтиды.

Кейбір компьютерлік тілдер белгілі бір файлдық жүйелер үшін қосымша функционалдылықты қамтитын жұмыс уақытының кітапханаларын қамтиды. Ашық (немесе кейбір қосымша көмекші) кілт өлшеміне, жазба өлшеміне, қосылу жылдамдығына арналған сипаттамаларды қамтуы мүмкін. Кейбір ашық процедураларға қате болған жағдайда орындалатын бағдарлама кодының спецификациясы кіреді.

Perl тілінің формасы

ашық ФИЛЕХАНД,РЕЖИМ[,EXPR]

Мысалға:

ашық(менің $ fh, ">", «output.txt»);

Перл сонымен қатар галстук функциясы Галстук :: Файл массивті файлмен байланыстыратын модуль.[1] The галстук :: AnyDBM_File функциясы хэшті файлмен байланыстырады.[2]

C кітапханасының POSIX анықтамасы

The ашық қоңырау стандартталған POSIX үшін сипаттама C тілі:

int ашық(const char *жол, int қож, .../ *, mode_t режимі * /);int openat(int фд, const char *жол, int қож, ...);int жасаушы(const char *жол, режим_т режимі);ФАЙЛ *фопен(const char *шектеу файл атауы, const char *шектеу режимі);

Қайтарылған мән - бұл файлдың дескрипторы, ол процестің белгілі бір құрылымына сілтеме болып табылады, ол басқалармен қатар келесі әрекетте файлдағы қай орынға әсер ететінін көрсететін позиция көрсеткішін қамтиды.

Ашу қайтып келуі мүмкін −1 ақаулықты көрсетеді қате қатені егжей-тегжейлі көрсету.

Файлдық жүйе сонымен қатар барлық ашық файлдардың глобальдық кестесін жаңартады, ол файлды қазіргі уақытта қандай-да бір процессте қолданып жүргендігін анықтауға арналған.

жол

Ашылатын файл атауы. Оған файл жолы файл қай жерде, қай файлдық жүйеде орналасқанын анықтау (немесе құру керек).

openat салыстырмалы жол күтеді.

қож

Бұл аргумент Немесе бірге қосымша параметрлер және (бастап <fcntl.h >) бірі:

O_RDONLY, O_RDWR және O_WRONLY

Параметр параметрлеріне мыналар кіреді:

O_APPEND жазылған деректер файл соңына қосылады. Файлмен жұмыс әрдайым позиция көрсеткішін файлдың соңына қарай реттейді.
O_CREAT Егер ол жоқ болса, файл жасаңыз; әйтпесе ашудың параметрі орындалмайды қате ENOENT дейін.
O_EXCL Бірге қолданылады O_CREAT егер файл бұрыннан бар болса, сәтсіз аяқталып, errno мәнін EEXIST етіп орнатыңыз.
O_TRUNC Егер файл бұрыннан бар болса, оның алдыңғы мазмұнын бос файлға дейін азайтыңыз. Құрылғыға немесе аталған құбырға қолданылмайды.

Қосымша жалаулар мен қателер анықталған ашық қоңырау.

creat () келесідей жүзеге асырылады:

int жасаушы(const char *жол, режим_т режимі){    қайту ашық(жол, O_WRONLY|O_CREAT|O_TRUNC, режимі);}

фопен сияқты жол жалаушаларын қолданады р, w, а және + және бірге қолданылған файл көрсеткішін қайтарады fgets, fputs және fclose.

режимі

Жаңа файл жасаған кезде ғана қосымша және сәйкес келедіфайл рұқсаттары. Оларға файл иесінің, топтың немесе барлық пайдаланушылардың оқуы, жазуы немесе орындалуы жатады. Режим қоңырау процесінің көмегімен жасырылады умаск: режимде орнатылған биттер өшіріледі.

Сондай-ақ қараңыз

Ескертулер

  1. ^ «Галстук :: файл». perldoc.perl.org. Алынған 2011-08-07.
  2. ^ «AnyDBM_File». perldoc.perl.org. Алынған 2011-08-07.

Әдебиеттер тізімі

  • Ричард Стивенстің UNIX ортасында кеңейтілген бағдарламалау ISBN  81-7808-096-6
  • Sumitabh Das ұсынған UNIX тұжырымдамасы