LinuxForum.Fans
Тема

Жёсткая ссылка

Автор: enterprise_carlos 3 сообщений 2873 просмотров
#298970
text
user@linux ~/dia $ touch file2.txt
user@linux ~/dia $ echo "text" > file2.txt 
user@linux ~/dia $ cat file2.txt 
text
user@linux ~/dia $ ln file2.txt qwerty
user@linux ~/dia $ cat qwerty 
text
user@linux ~/dia $ rm file2.txt 
user@linux ~/dia $ ls
qwerty
user@linux ~/dia $ cat qwerty 
text
user@linux ~/dia $ 

Почему удалился файл file2.txt, если ещё жива жёсткая ссылка на него qwerty ?
Или я что-то неправильно понял?!

#298974

Файл удаляется тогда, когда не останется ни одной жесткой ссылки, на него указывающей.

#298978
"enterprise.carlos" написал:
Почему удалился файл file2.txt, если ещё жива жёсткая ссылка на него qwerty ?Или я что-то неправильно понял?!

да,
«файл» — это последовательность байт с его содержимым + дескриптор (инод)
«жёсткая ссылка» ака «имя файла» — запись в каталоге, ссылающаяся на файл (на его инод)
rm file удаляет только одну жёсткую ссылку (для точности, через системный вызов unlink(2) ).
при этом счётчик ссылок в дескрипторе уменьшается... если он равен нулю и если файл ни кем не открыт, то удаляется и весь файл (его место и дескриптор помечаются, как пустые)

как-то так...

Войдите или зарегистрируйтесь, чтобы ответить.