如何在Linux内核中通过inode删除文件

如何在Linux内核中通过inode删除文件

我获得了linux内核中一个文件的inode,我想通过inode删除该文件。

我是否需要取消链接 inode 的每个 dentry?或者我是否需要取消链接任何 dentry?

我应该使用哪种锁来保护什么?

答案1

可移植文件删除调用、unlink()、remove() 和更高级别的包装器几乎都采用路径名。Inode 主要是实现细节。

要在 shell 中执行此操作,请使用 GNU 等工具寻找

find /tmp  -type f -inum $INODE

/tmp用要搜索的路径替换,$INODE用数字替换。-delete 如果希望结果不链接,请添加。可能会找到同一 inode 的多个名称。

由于此方法要遍历所有文件,因此效率不高。

答案2

在 Linux 中,您不能删除文件。

要做的是删除对它的所有引用,然后文件系统将自动删除空间并将 inode 标记为未使用。

但请注意,文件可以被正在运行的进程引用。即使文件系统中没有任何内容指向该文件,该文件仍将存在。直到进程完成或关闭该文件,它仍将存在。

相关内容