Системное программирование в UNIX средствами Free Pascal

       

Снова о системных вызовах link и unlink


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

Если в каталоге с рис. 4.2 создать ссылку на файл abc с именем xyz при помощи следующего вызова

link('abc', 'xyz');

то рассматриваемый участок каталога будет выглядеть примерно так, как показано на рис. 4.3. При удалении ссылки при помощи системного вызова unlink соответствующие байты, содержащие имя файла, освобождаются для дальнейшего использования. Если имя файла представляет последнюю ссылку на этот файл, то вся связанная с ним структура индексных дескрипторов стирается. Связанные с файлом блоки на диске, которые содержали данные файла, добавляются к поддерживаемому системой списку свободных блоков и становятся пригодными для дальнейшего использования. В большинстве систем UNIX восстановление удаленных файлов невозможно.

120

f

r

e



d

\0

207

b

o

o

k

m

a

r

k

\0

235

a

b

c

\0

235

x

y

z

\0

Рис. 4.3. Пример каталога с новым файлом



Содержание раздела