Linux核心中如何透過inode刪除文件

Linux核心中如何透過inode刪除文件

我在linux核心中取得了一個檔案的inode,我想透過inode刪除該檔案。

我需要取消連結 inode 的每個 dentry 嗎?或者我需要取消任何目錄項目的連結嗎?

我該使用哪種鎖來保護什麼?

答案1

可移植檔案刪除呼叫、unlink()、remove() 和更高層級的包裝器幾乎都採用路徑名稱。索引節點主要是實作細節。

若要在 shell 中執行此操作,請使用 GNU 等工具尋找

find /tmp  -type f -inum $INODE

替換/tmp為要搜尋的路徑$INODE和數字。-delete 如果您希望結果取消鏈接,請添加。可能會找到同一 inode 的多個名稱。

由於此方法會遍歷所有文件,效率不高。

答案2

在 Linux 中,您無法刪除檔案。

你什麼要做的就是刪除所有對它的引用,然後檔案系統將自動刪除空間並將該 inode 標記為未使用。

但請注意,正在運行的進程可以引用檔案。即使文件系統中沒有任何內容指向該文件,該文件仍然存在。在進程完成或關閉檔案之前,它仍然存在。

相關內容