Изменение корневого каталога: — КиберПедия 

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Изменение корневого каталога:

2021-01-29 57
Изменение корневого каталога: 0.00 из 5.00 0 оценок
Заказать работу

 

Текущий рабочий каталог, установленный с помощью) (см. раздел 8.4.1 «Изменение каталога – и»), является атрибутом процесса, таким же, как набор открытых файлов. Он также наследуется новыми процессами.

Менее известным является то, что у каждого процесса есть также текущий корневой каталог. Это именно на этот каталог ссылается имя пути. В большинстве случаев корневые каталоги процесса и системы идентичны. Однако, суперпользователь может изменить корневой каталог с помощью (как вы догадались) системного вызова:

 

Возвращаемое значение равно 0 при успешном завершении и ‑1 при ошибке.

Как указывает справочная страница GNU/Linux chroot (2), изменение корневого каталога не изменяет текущий каталог: программы, которые должны обеспечить нахождение под новым корневым каталогом, должны также вызвать затем:

 

 

Системный вызов чаще всего используется для демонов – фоновых программ, которые должны работать в специальном ограниченном окружении. Например, рассмотрите демон Интернета FTP, допускающий анонимный FTP (соединение любого клиента из любого места, без обычных имени пользователя и пароля). Очевидно, такое соединение не должно быть способным видеть все файлы целой системы. Вместо этого демон FTP выполняет в специальный каталог со структурой, достаточной лишь чтобы позволить ему функционировать. (Например, со своим собственным для перечисления файлов, со своей копией библиотеки С времени исполнения, если она разделяется, и, возможно, со своей копией и  для отображения ограниченного набора имен пользователей и групп.)

POSIX не стандартизует этот системный вызов, хотя GNU/Linux и все системы Unix его поддерживают. (Он популярен с V7.) Он специализирован, но при необходимости очень удобен.

 

Резюме

 

• Файловые системы являются коллекциями блоков индексов, данных, вспомогательных данных и свободных блоков, организованных особым способом. Файловые системы один к одному соответствуют (физическим или логическим) разделам, на которых они создаются. У каждой файловой системы есть свой корневой каталог; по соглашению, у корневого каталога номер индекса всегда равен 2.

• Команда монтирует файловую систему, наращивая логическое иерархическое пространство имен файлов. Команда отсоединяет файловую систему. Ядро делает и одним и тем же; корневой каталог всего пространства имен является своим собственным родителем. Во всех остальных случаях ядро устанавливает в корневом каталоге смонтированной файловой системы указывающим на родительский каталог точки монтирования.

• Современные Unix‑системы поддерживают множество типов файловых систем. В частности, повсеместно поддерживается сетевая файловая система (NFS) Sun, также, как ISO 9660 является стандартным форматом для CD‑ROM, а разделы FAT MS‑ DOS поддерживаются на всех Unix‑системах, работающих на платформе Intel x86. Насколько мы знаем, Linux поддерживает наибольшее число различных файловых систем – свыше 30! Многие из них специализированные, но многие из оставшихся предназначены для общего использования, включая по крайней мере четыре различные журналируемые файловые системы.

• Файл перечисляет разделы каждой системы, их точки монтирования и относящиеся к монтированию опции, перечисляет те файловые системы, которые смонтированы в настоящее время, то же делает на системах GNU/Linux. Опция функции особенно полезна под GNU/Linux для монтирования образов файловых систем, содержащихся в обычных файлах, таких, как образы CD‑ROM. Другие опции полезны для безопасности и монтирования внешних файловых систем, таких, как файловые системы vfat Windows.

• Файлы формата можно читать с помощью набора процедур. Формат GNU/Linux общий с рядом других коммерческих вариантов Unix, особенно Sun Solaris.

• Функции и стандартизованы POSIX для получения сведений о файловой системе, таких, как число свободных и используемых дисковых блоков, число свободных и используемых индексов и т.д. В Linux есть свой собственный системный вызов для получения подобной информации: и.

• и дают процессу возможность изменить его текущий каталог, получает абсолютное имя пути текущего каталога. Эти три функции просты в использовании.

• Функция централизует задачу «обхода дерева файлов», т.е. посещения каждого объекта файловой системы (файла, устройства, символической ссылки, каталога) во всей иерархии каталогов. Ее поведением управляют различные флаги. Программист должен предоставить функцию обратного вызова, которая получает имя каждого файла, для файла, тип файла и сведения об имени файла и уровне в иерархии. Эта функция может делать для каждого файла все что нужно. Версия функции из Coreutils 5.0 GNU использует для выполнения этой работы расширенную версию.

• Наконец, системный вызов изменяет текущий корневой каталог процесса. Это специализированная, но важная возможность, которая особенно полезна для определенных программ в стиле демонов.

 

Упражнения

 

1. Изучите справочную страницу mount (2) под GNU/Linux и на всех различных системах Unix, к которым у вас есть доступ. Как отличаются системные вызовы?

2. Усовершенствуйте программу, чтобы она принимала опцию, предоставляющую открытый целый дескриптор файла; для получения сведений о файловой системе она должна использовать.

3. Усовершенствуйте, чтобы она не игнорировала смонтированные файловые системы NFS. Такие файловые системы имеют устройство в форме.

4. Измените (ту, которая использует специфичный для Linux вызов), чтобы ее вывод был похож на вывод.

5. Добавьте опцию к программе, которую вы написали для предыдущего упражнения, чтобы ее вывод был такой же, как у ''.

6. Используя,, или,  и, напишите собственную версию. Как вы вычислите общий размер, который должен иметь буфер? Как вы будете перемещаться по иерархии каталогов?

7. Усовершенствуйте свою версию, чтобы она выделяла буфер для вызывающего, если первый аргумент равен NULL.

8. Можете ли вы использовать для написания? Если нет, почему?

9. Используя, напишите свою собственную версию, которая принимает опцию для рекурсивной обработки целых деревьев каталогов. Убедитесь, что без, ' пользователь каталог ' не является рекурсивной. Как вы это проверите?

10. Набор процедур BSD («file tree stream» – «поток дерева файлов») предоставляет другой способ для обработки иерархии каталогов. У него несколько более тяжелый API как в смысле числа функций, так и структур, которые доступны для вызывающих функций уровня пользователя. Эти функции доступны как стандартная часть GLIBC.

Прочтите справочную страницу fts (3). (Для удобства ее можно распечатать.) Перепишите свою частную версию chown для использования.

11. Посмотрите справочную страницу find (1). Если бы вы пытались написать с самого начала, какой набор деревьев файлов вы бы предпочли, или? Почему?

 

Часть 2


Поделиться с друзьями:

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.012 с.