UNIX: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Строка 40:
Кроме того, каждый каталог содержит ссылку на себя (обозначается точкой (.)) и ссылку на тот каталог, в котором он находится (обозначается двумя точками (..))
 
Наконец, <u>совсем строго говоря</u>, каталог содержит ссылки не на файлы, а на ''индексные дескрипторы'' файлов. Индексный дескриптор, он же '''inode''' (произносится ай-нод, с ударением на о), содержит всю известную системе информацию о файлах, в частности время создания, время последнего изменения, длину, ссылку на сам файл, кто владеет этим файламфайлом, права доступа (см. ниже), что это за файл (обычный файл, каталог и т.д.), а также - и это необходимо - количество ссылок на этот индексный дескриптор. При создании новой ссылки командой '''ln''', количество ссылок увеличивается на 1, при стирании - уменьшается на 1. Если количество ссылок становится равно 0, вызывается системный вызов unlink(), удаляющий упоминание о файле из каталога и помечающий место, занимаемое этим файлом, как свободное. После этого оно может быть использованно для хранения других файлов, однако до фактической перезаписи сохраняется [теоретическая] возможность восстановления, на практике же возможность восстановления зависит от типа используемой файловой системы.
 
Важно понимать, что ''индексный дескриптор не знает, откуда на него ссылаются''. Поэтому в UNIX, имея файл, невозможно определить, в каких ещё каталогах есть ссылки на него. (То есть можно, но лишь просмотрев все файлы ФС.)