Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1.docx
Скачиваний:
21
Добавлен:
12.02.2016
Размер:
1.06 Mб
Скачать

Операції з каталогами

Допустимі системні виклики для управління каталогами мають більшу кількість варіантів від системи до системи, ніж системні виклики, що керують файлами. Розглянемо приклади, що дають уявлення про ці системних викликах і характері їх роботи.

1. Create (Створити каталог). Каталог створюється порожнім, за винятком крапки і подвійний крапки, які система поміщає в нього автоматично (або в деяких випадках за допомогою програми mkdir).

 2. Delete (Видалити каталог). Видалити можна тільки порожній каталог. Каталог, який містить лише крапку і подвійну крапку, розглядається як порожній, оскільки вони, як правило, не можуть бути видалені.

3. Opendir (Відкрити каталог). Каталоги можуть бути прочитані. Наприклад, для виведення імен всіх файлів, що містяться в каталозі, програма ls відкриває каталог для читання імен всіх містяться в ньому файлів. Перед тим як каталог може бути прочитаний, він повинен бути відкритий за аналогією з відкриттям і читанням файлу.

4. Closedir (Закрити каталог). Коли каталог прочитаний, він повинен бути закритий, щоб звільнити простір у внутрішніх таблицях системи.

5. Readdir (Прочитати каталог). Цей виклик повертає наступний запис з відкритого каталогу. Раніше каталоги можна було читати за допомогою звичайного системного виклику read, але недолік такого підходу полягав у тому, що программіст змушений був працювати з внутрішньою структурою каталогів, про яку він повинен був знати заздалегідь. На відміну від цього, readdir завжди повертає один запис в стандартному форматі, незалежно від того, яка з можливих структур каталогів використовується.

6. Rename (Перейменувати каталог). У багатьох відносинах каталоги подібні файлів і можуть бути точно так само перейменовані, як і файли.

7. Link (Прив'язати). Прив'язка являє собою технологію, що дозволяє файлу з'являтися більш ніж в одному каталозі. У цьому системному виклику вказується існуючий файл і нове ім'я файлу в деякому існуючому каталозі, і створюється прив'язка існуючого файлу до вказаного каталогу з зазначенням нового імені. Таким чином один і той же файл може з'явитися в декількох каталогах, можливо навіть, під різними іменами. Подібна прив'язка, що збільшує показання файлового лічильника i-вузла (призначеного для відстеження кількості записів каталогів, в яких фігурує файл), іноді називається жорстким зв'язком, або жорстким посиланням (hard link).

8. Unlink (Відв'язати). Видалити запис каталогу. Якщо відв'язувати файл присутній тільки в одному каталозі (що найчастіше і буває), то цей виклик видалить його з файлової системи. Якщо він фігурує в декількох каталогах, то він буде вилучений з каталогу, який вказаний в імені файлу. Всі інші записи залишаться. Фактично, системним викликом для видалення файлів в UNIX (як раніше вже було розглянуто), є unlink.

У наведеному списку перераховані найбільш важливі виклики, але існують і інші виклики, наприклад, для управління захистом інформації, пов'язаної з каталогами. Ще одним варіантом ідеї прив'язки файлів є символічна посилання (symbolic link). Замість двох імен, що вказують на одну і ту ж внутрішню структуру даних, що представляє файл, може бути створено ім'я, яке вказує на дуже маленький файл, в якому міститься ім'я іншого файлу. Коли використовується перший файл, наприклад він відкривається, файлова система йде по зазначеному шляху і в кінцевому підсумку знаходить ім'я. Потім вона починає процес пошуку всіх місць, де використовується це нове ім'я. Перевагою символічних посилань є те, що вони можуть перетинати межі дисків і навіть вказувати на імена файлів, що знаходяться на віддалених комп'ютерах. І тим не менше їх реалізація дещо поступається в ефективності жорстким зв'язкам.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]