我获得了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 标记为未使用。
但请注意,文件可以被正在运行的进程引用。即使文件系统中没有任何内容指向该文件,该文件仍将存在。直到进程完成或关闭该文件,它仍将存在。