Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lecture.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
740.35 Кб
Скачать

5.2.3. Шляхи

При організації файлової системи у вигляді дерева каталогів потрібно якийсь

спосіб вказівки файлу. Для цього зазвичай використовують два методи. У першому

разі звернення до файлу виконується за абсолютним шляху, складеним з імен всіх каталогів від кореневого до того, в якому міститься файл, і імені самого файлу. Наприклад, шлях / usr / ast / mailbox означає, що кореневої каталог містить підкаталог us г, в який, в свою чергу, вкладений підкаталог ast, де знаходиться файл mailbox. Абсолютні шляху завжди починаються від кореневого каталогу і є унікальними. В UNIX компоненти шляху розділяються косою рисою (/). У Windows як роздільник прийнята зворотна коса

риса (\). Таким чином, одне і те ж ім'я шляху в цих операційних системах

буде виглядати наступним чином:

  Windows:

\ Usr \ ast \ mailbox

♦ UNIX:

/ Usr / ast / mailbox

Якщо першою літерою імені шляху був роздільник, незалежно від використовуваного

як роздільник символу, це означало, що шлях абсолютний. Крім абсолютного застосовують і відносний шлях. Відносний шлях безпосередньо пов'язаний з концепцією робітника, або поточного, каталогу. Користувач може призначити один з каталогів поточним (робочим) каталогом. В цьому випадку всі імена шляхів без початкового символу роздільника вважаються відносними і відраховуються щодо поточного каталогу. Наприклад, якщо поточним каталогом є / usr / ast, тоді до файлу з абсолютним шляхом

/ Usr / ast / mailbox можна звернутися просто як до mailbox. Іншими словами, якщо робочим каталогом є / usr / ast, наступні UNIX-команди виконають одне й те саме:

ср / usr / ast / mailbox / usr / ast / mailbox.bak

ср mailbox mailbox.bak

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

вказувати абсолютні імена. Наприклад, програму перевірки правопису може

знадобитися для виконання роботи прочитати файл / usr / lib / dictionary.

В цьому випадку вона повинна використовувати абсолютне ім'я файлу, оскільки

заздалегідь невідомо, яким буде робочий каталог при її виклику. Абсолютна

назва файлу буде працювати завжди, незалежно від того, який каталог є поточним.

Якщо програмі перевірки правопису знадобиться велика кількість файлів з каталогу / usr / lib, вона може, звернувшись до операційної системи, поміняти робочий каталог на / usr / lib, після чого вказувати просто ім'я dictionary в якості першого аргументу системного виклику open. Явно вказавши свій робочий каталог, програма може використовувати надалі відносні імена, оскільки точно знає, де вона знаходиться в дереві каталогів.

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

продовжувати свою роботу, так як її припущення про поточний каталог виявляться

невірним. З цієї причини бібліотечні процедури рідко змінюють робочі каталоги, а коли все-таки міняють, обов'язково відновлюють старе ім'я перед поверненням управління.

Більшість операційних систем, що підтримують ієрархічні каталоги, мають спеціальні записи в кожному каталозі, які означають поточний (.) і батьківський (..) каталог

Для деякого процесу каталог / usr / ast є робочим. Тоді процес може використовувати дві точки (..), щоб вказати на необхідність переміститися вгору по дереву. Наприклад, він може копіювати файл / usr / lib / dictionary у власний каталог за допомогою команди

ср .. / lib / dictionary

Дві точки є інструкцією системі піднятися вгору (в каталог usr). Після цього потрібно відкрити каталог lib і знайти в ньому файл dictionary. Другий варіант позначення (.) Вказує на поточний каталог. Коли команда отримує ім'я каталогу (включаючи крапку) в якості останнього аргументу, вона копіює в нього всі файли. Зрозуміло, більш адекватним способом копіювання є команда

ср usr / lib / dictionary.

Тим не менше з тим же успіхом ви можете набрати будь-яку з двох наступних

команд:

ср / usr / lib / dictionary dictionary

ср / usr / lib / dictionary / usr / ast / dictionary

Всі три команди роблять в точності одне й те саме.

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