亚洲国产第一_开心网五月色综合亚洲_日本一级特黄特色大片免费观看_久久久久久久久久免观看

Hello! 歡迎來到小浪云!


從兩個方面來闡述下linux為什么不允許創建文件夾的硬鏈接


avatar
小浪云 2024-11-28 184

從兩個方面來闡述下linux為什么不允許創建文件夾的硬鏈接

使用方面考慮,會產生遞歸黑洞,舉例:

文件夾 a,b,在a下面創建b文件夾得硬鏈接c,在b下面創建a文件夾的硬鏈接d,

ls a ,會看到c,ls c,看到b下的文件夾d,再ls d又看到c,這樣可以無限ls下去

軟連接在訪問時readlink有遞歸次數的限制,硬鏈接就是普通inode,所以沒辦法記錄遞歸次數

代碼實現角度

代碼實現方面應該是可以做到的。首先pwd不是由文件系統拼接路徑的,而是記錄在一個全局變量中,所以cd 。。 的時候只是需要獲得上一級目錄inode的屬性來檢查權限,或者顯示屬性信息。路徑只需要簡單運算就可以得到。

每個路徑都對應一個dentry,即使是相同的inode,如果是不同path,那么dentry是不同的,dentry在內存中的hashtable是通過父目錄的dentry來hash,而不是父目錄inode,

path_walk的過程中,如果父目錄是軟連接,則會readlink找到被連接的父目錄inode,再用該inode來獲取名字空間。

相關閱讀