linux為什麼不能硬鏈結目錄?

時間 2021-06-03 08:48:28

1樓:悟覓

儘管支援目錄硬鏈結不是乙個容易的事情,然而NTFS能夠正確處理檔案與資料夾硬鏈結,管理員用好這項功能可大幅減少重複檔案,讓不同的應用在各自的工作目錄下,而不用維護複雜的跨目錄管理。

2樓:hitshouge

徐三響同學的例子一可以說是完美解決這個問題了。但我引申出了乙個問題。

很多人都提到一點.和..都是硬鏈結,不知道有沒有人跟我一樣懷疑過部分目錄和他的父目錄不在乙個檔案系統中,那此時還是硬鏈結嗎?

比如,我的根目錄/掛載sda1,但是我的/ home 掛載sda 2,那麼此時/ home 目錄下的..還是硬鏈結嗎,明明已經跨分割槽,跨檔案系統了啊。我測試了一下發現仍然是硬鏈結,並且inode 號是對的,這一點我不知道linux 內部是怎麼處理的,但是硬鏈結確實跨了檔案系統,僅此一例。

3樓:趙老師

目錄是種特殊的檔案,普通檔案不會存放自己的位置資訊,只有乙個inode[x]的資料結構指向檔案,其中,x是檔案的inode索引號碼。

而我們ls乙個目錄,會發現目錄檔案最開始的兩條資料是「."和"..",也就是說,目錄檔案在檔案裡已經寫死了自己在檔案系統中的位置

允許目錄的hard link,也就意味著某個目錄的hard link集合,只有乙份是對的,顯然這沒有意義。

4樓:

硬鏈結不能對目錄建立受限於檔案系統的設計。Linux 檔案系統中的目錄均隱藏了兩個特殊的目錄,當前目錄.和父目錄..

其實是兩個硬鏈結,若系統執行對目錄建立硬鏈結,則會產生目錄環。

5樓:Tanky Woo

filesystem - Why are hard links not allowed for directories?

6樓:狂奔的蝸牛

說到硬連線,自然你要先考慮軟連線跟硬連線區別,軟連線就相當於我們win中的快捷方式即如果你軟連線乙個目錄只是乙個目錄的快捷方式到指定位置,作業系統找這個快捷方式會直接找到真實目錄下的檔案。但是硬連線的話,相當於映象的方式,你建立乙個目錄的硬連線之後,作業系統需要把這個目錄下所有的檔案都要做一次硬連線(複製乙份過去),這樣作業系統在訪問這個鏈結的時候要不斷去遍歷,大大增加複雜度,而且很容易進入死迴圈。現在linux沒有很好支援這個所以不支援。

Linux軟鏈結和硬鏈結的區別?

李剛 對於軟鏈 硬鏈的內容整理,是為後續 pnpm 的內容做準備。示例 cd Users ligang Documents github practice links sources 在測試目錄下建立相應的測試檔案 touch test.js echo console.log links test....

linux為什麼要掛載,直接訪問 dev目錄不行嗎?

朱大人 簡而言之,就是linux核心不能直接驅動硬體裝置,而是通過額外編寫的程式去驅動硬體,理論上你可以自己去實現並且能被小胖子接受,可以不掛載 醉臥沙場 這個問題問的就好像在問 為什麼要把小麥加工成麵粉後做成麵包 饅頭 包子 餅之類的再吃,直接吃麥粒或麵粉不香嗎?一樣。dev 下的裝置檔案面向的是...

為什麼 Linux 原生不能執行 exe 格式的檔案?

lemon exe檔案是機器指令,不是彙編指令。exe檔案都是經過編譯連線之後的產物,經過彙編器已經是二進位制指令了。因為exe檔案是windows下的可執行檔案PE格式,而linux下可執行檔案是ELF格式,首先格式都不一樣。其次程式執行可能需要共享庫,比如動態鏈結庫,在windows下是dll,...