Хорошее место для запуска состояло бы в том, чтобы учиться компилировать Ядро Linux. Перейдите к www.kernel.org и начните загружать версии мерзавца и попытайтесь скомпилировать их сначала. Еще не устанавливайте их! Просто обучение создать ядро получит Вас идущий наверняка.
В Unix всеми нормальными файлами является Hardlinks. Hardlinks в Unix (и большинство (все?)) файловые системы являются ссылками на то, что звонило inode
. inode
имеет ссылочный счетчик, когда у Вас есть одна "ссылка" на файл (который является нормальным принципом работы), счетчик равняется 1. То, когда Вы создаете секунду, третью, четвертую, и т.д. связываетесь, счетчик увеличен (увеличилось) каждый раз одним. Когда Вы удаляете (rm
) ссылка счетчик постепенно уменьшается (уменьшенная) одним. Если счетчик ссылки достигает 0, файловая система удаляет inode
и отмечает пространство как доступное для использования.
Короче говоря, пока Вы не удаляете последнюю ссылку, которой останется файл.
Edit:
Файл останется, даже если последняя ссылка будет удалена. Это - один из способов гарантировать, что безопасность данных, содержавшихся в файле, не доступна ни для какого другого процесса. Удаление данных из файловой системы полностью сделано, только если данные имеют 0 ссылок на него, как дали в его метаданных и не используются никаким процессом.
Это, по моему скромному мнению - безусловно самый легкий способ понять жесткие ссылки (и его различие от softlinks).
Тестирование было легче, чем я думал: Я создал текстовый файл, затем трудно связанный с ним. Удаление жесткой ссылки не удаляет файл, это - hardlinked к и файл, который был связан с, остается, где это.
все файлы на вашем диске на самом деле являются указателями на реальные данные на вашем диске.
когда вы делаете жесткую ссылку для этого файла, жесткая ссылка -ed файл будет указывать на те же данные, на которые указывал исходный файл.
как в этом примере, файл.txt указывал на данные (байт )файла, который находится на диске, когда создается жесткая ссылка b.txt, он будет указывать на то, на что указывал файл.txt. к.
Таким образом, удаление одного из них не повлияет на другое, поскольку они отделены друг от друга.
НО, когда вы удалите их оба, система увидит, что данные на диске не имеют файла, указывающего на него, поэтому система будет рассматривать его как свободное пространство и перезапишет его, когда захочет.
unlink()
. – mouviciel 08.10.2012, 08:38unlink
редактор – cjm 08.10.2012, 09:26/proc
отдельная (виртуальная) файловая система. – cjm 08.10.2012, 12:18unlink()
удалить файл озадачило меня ни к какому концу, когда я начал играть с C, программирующим на MS-DOS некоторое время назад в первой половине 1990-х. :) – a CVn 08.10.2012, 14:13