Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 636193)
Контекстум
Руконтекст антиплагиат система
Linux Format (Линукс Формат)  / №6 2015

СИСТЕМА: ДОСТУП ПРОИЗВОЛЕН (80,00 руб.)

0   0
Первый авторБраун Крис
Страниц4
ID566271
АннотацияМесяц назад мы рассмотрели, как читать и записывать данные в файл с помощью классических системных вызовов open(), read(), write() и close(). В этом месяце мы уделим еще немного внимания вводу/выводу данных, рассмотрев произвольный доступ к файлам, а затем посмотрим, как наши программы взаимодействуют с самой структурой файловой системы Когда процесс открывает файл, ядро Linux формирует маркер — назову его маркером положения — который следит за текущим байтовым смещением в файле и определяет место начала следующего чтения или записи. Этот маркер перемещается автоматически; если мы считываем 600 байт, маркер сдвигается на 600 байт, и следующее считывание начнется там, где закончилось предыдущее. То же самое происходит и при записи. Так мы получаем последовательный доступ к файлу. Но можно и установить маркер явно с помощью системного вызова lseek(). Это позволит нам обращаться к данным в любом выбранном порядке.
Браун, К. СИСТЕМА: ДОСТУП ПРОИЗВОЛЕН / К. Браун // Linux Format (Линукс Формат) .— 2015 .— №6 .— С. 90-93 .— URL: https://rucont.ru/efd/566271 (дата обращения: 18.05.2024)

Предпросмотр (выдержки из произведения)

Сис тем ное про грам ми ро ва ние Сис те ма: Дос туп про из во лен Во вто рой час ти се рии д- ра Кри са Брау на мы уз на ем, что та кое про из воль ный дос туп к фай лам, изу чим inode и ссыл ки и по чи та ем в ка та ло гах. lseek(fd, 0, SEEK_BEG); «пе ре мо та ет» файл в на ча ло, а lseek(fd, 0, SEEK_END); — в ко нец фай ла, так что при сле дую щей за пи си файл уве ли чится в раз ме ре; вы зов же lseek(fd, -600, SEEK_CUR); Наш эксперт Док тор Крис Бра ун обу ча ет, пи шет и кон суль ти рует по Linux. <...> Уче ная сте пень по фи зи ке эле мен тар ных частиц ему в этом совсем не по мо га ет. сдви нет кур сор от те ку ще го по ло же ния на 600 байт на зад. <...> Ни же — при мер ис поль зо ва ния функ ции lseek для об нов ления од ной за пи си в фай ле, «за то чен ном» под за пи си. <...> В этом ме сяце мы уде лим еще не мно го вни ма ния вво ду/вы во ду дан ных, рассмот рев про из воль ный дос туп к фай лам, а за тем по смот рим, как на ши про грам мы взаи мо дей ст ву ют с са мой струк ту рой фай ловой сис те мы. <...> Ко гда про цесс от кры ва ет файл, яд ро Linux фор ми ру ет маркер — на зо ву его мар ке ром по ло же ния — ко то рый сле дит за теку щим бай то вым сме ще ни ем в фай ле и оп ре де ля ет ме сто на чала сле дую <...>