使用方面考慮,會產生遞歸黑洞,舉例:html
文件夾 a,b,在a下面建立b文件夾得硬連接c,在b下面建立a文件夾的硬連接d,node
ls a ,會看到c,ls c,看到b下的文件夾d,再ls d又看到c,這樣能夠無限ls下去linux
軟鏈接在訪問時readlink有遞歸次數的限制,硬連接就是普通inode,因此沒辦法記錄遞歸次數htm
代碼實現角度blog
代碼實現方面應該是能夠作到的。首先pwd不是由文件系統拼接路徑的,而是記錄在一個全局變量中,因此cd 。。 的時候只是須要得到上一級目錄inode的屬性來檢查權限,或者顯示屬性信息。路徑只須要簡單運算就能夠獲得。遞歸
每一個路徑都對應一個dentry,即便是相同的inode,若是是不一樣path,那麼dentry是不一樣的,dentry在內存中的hashtable是經過父目錄的dentry來hash,而不是父目錄inode,內存
path_walk的過程當中,若是父目錄是軟鏈接,則會readlink找到被鏈接的父目錄inode,再用該inode來獲取名字空間。get