掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
Linux 系統(tǒng)中有軟鏈接和硬鏈接兩種特殊的“文件”,軟鏈接可以看作是Windows中的快捷方式,可以讓你快速鏈接到目標(biāo)檔案或目錄,硬鏈接則透過(guò)文件系統(tǒng)的inode來(lái)產(chǎn)生新檔名,而不是產(chǎn)生新檔案。

文件夾 a,b,在a下面創(chuàng)建b文件夾得硬鏈接c,在b下面創(chuàng)建a文件夾的硬鏈接d,
ls a ,會(huì)看到c,ls c,看到b下的文件夾d,再ls d又看到c,這樣可以無(wú)限ls下去
軟連接在訪問(wèn)時(shí)readlink有遞歸次數(shù)的限制,硬鏈接就是普通inode,所以沒(méi)辦法記錄遞歸次數(shù)
代碼實(shí)現(xiàn)方面應(yīng)該是可以做到的。首先pwd不是由文件系統(tǒng)拼接路徑的,而是記錄在一個(gè)全局變量中,所以cd 。。 的時(shí)候只是需要獲得上一級(jí)目錄inode的屬性來(lái)檢查權(quán)限,或者顯示屬性信息。路徑只需要簡(jiǎn)單運(yùn)算就可以得到。
每個(gè)路徑都對(duì)應(yīng)一個(gè)dentry,即使是相同的inode,如果是不同path,那么dentry是不同的,dentry在內(nèi)存中的hashtable是通過(guò)父目錄的dentry來(lái)hash,而不是父目錄inode,
path_walk的過(guò)程中,如果父目錄是軟連接,則會(huì)readlink找到被連接的父目錄inode,再用該inode來(lái)獲取名字空間。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流