Я получил индекс файла в ядре Linux и хочу удалить файл с помощью индекса.
Нужно ли мне отключать каждый dentry inode? Или мне нужно отключать любой dentry?
Какие замки следует использовать для защиты чего?
решение1
Вызовы переносимого удаления файлов, unlink(), remove() и высокоуровневые оболочки, в основном все принимают имена путей. Иноды в основном являются деталью реализации.
Чтобы сделать это в оболочке, используйте такие инструменты, как GNUнаходить.
find /tmp -type f -inum $INODE
Замените /tmp
на путь поиска, $INODE
на номер. Добавьте, -delete
если хотите, чтобы результаты были несвязанными. Могут быть найдены несколько имен одного и того же inode.
Поскольку этот метод охватывает все файлы, он неэффективен.
решение2
В Linux удалить файл невозможно.
Что тыможетнужно удалить все ссылки на него, и тогда файловая система автоматически удалит пространство и отметит inode как неиспользуемый.
Но обратите внимание, что на файлы могут ссылаться запущенные процессы. Файл будет существовать, даже если на него ничего не указывает в файловой системе. Пока процесс не завершит работу или не закроет файл, он будет существовать.