91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

linux硬鏈接不能鏈接目錄的原因是什么

發布時間:2022-11-11 16:13:00 來源:億速云 閱讀:371 作者:iii 欄目:建站服務器

今天小編給大家分享一下linux硬鏈接不能鏈接目錄的原因是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

原因:引入了對目錄的硬連接就有可能在目錄中引入循環,在目錄遍歷的時候系統就會陷入無限循環當中,這樣導致無法定位到訪問目錄。Linux的目錄結構是一棵以“/目錄”為根節點的樹,如果允許自定義硬連接,則很有可能會破壞這個結構,甚至形成循環;而一旦形成循環,對于需要遍歷目錄樹的命令,是致命的。所以為了避免對目錄樹結構的破壞,linux不允許用戶自定義硬連接在目錄上。

LINUX的硬鏈接不能鏈接到目錄是因為引入了對目錄的硬連接就有可能在目錄中引入循環,在目錄遍歷的時候系統就會陷入無限循環當中,這樣導致無法定位到訪問目錄。

linux系統中,每個文件(目錄也是文件)都對應著一個inode結構,其中inode數據結構中包含了文件類型(目錄,普通文件,符號連接文件等等)的信息,也就是說操作系統在遍歷目錄時可以判斷出符號連接,既然可以判斷出符號連接當然就可以采取一些措施來防范進入過大的循環了,系統在連續遇到8個符號連接后就停止遍歷,這就是為什么對目錄符號連接不會進入死循環的原因了。但是對于硬連接,由于操作系統中采用的數據結構和算法限制,目前是不能防范這種死循環的。

linux硬連接的本質

在探討問題之前,先來談一下硬連接的本質。

硬連接實際上就是目錄的inode所指向的block的內容。目錄的block中的每一條記錄,都是一個硬連接。目錄本身是Linux中文件的一種(目錄文件,符號為d),而“目錄文件”的文件內容,就是一條條的硬連接。

舉個例子(注意圖片中目錄連接數的變化):

linux硬鏈接不能鏈接目錄的原因是什么

tmp目錄連接數變化前后圖示如下(紅線表示連接數來源):

linux硬鏈接不能鏈接目錄的原因是什么

通過上面的例子可以發現,一個目錄剛被創建時的硬連接數就為2,其中一個來自于父目錄,另一個來自于自身的“.”。如果再給目錄創建一個子目錄,那么硬連接數就會+1變成3,這是因為多了一個來自于子目錄的“..”的連接。

到這里或許有人會問,不是說硬連接不能用于目錄么?上面的演示又是怎么回事?

這里需要澄清一個概念,“硬連接不能用于目錄”,是說不能由用戶自定義目錄的硬連接,而只能由操作系統來維護。實際上目錄和硬連接是不可分隔、互為一體的。“硬連接”本身,其實就是目錄維護其子文件名&子目錄名的方式。

自定義硬連接的噩夢:循環

談完了硬連接的本質,就可以回到今天的主題了:為什么不允許用戶自定義目錄的硬連接?

我們知道Linux的目錄結構是一棵以“/目錄”為根節點的樹,如果允許自定義硬連接,則很有可能會破壞這個結構,甚至形成循環,例如下面的命令如果可以執行成功的話:

linux硬鏈接不能鏈接目錄的原因是什么

linux硬鏈接不能鏈接目錄的原因是什么

一旦形成循環,對于需要遍歷目錄樹的命令,是致命的(例如從上向下遍歷的du命令,從下向上遍歷的pwd命令)。所以為了避免對目錄樹結構的破壞,linux不允許用戶自定義硬連接在目錄上。軟連接之所以沒有這個限制,是因為軟連接文件有一個專門的文件類型,可供系統識別,而“硬連接文件”和系統的正常文件沒有任何不同,無法進行判斷。

以上就是“linux硬鏈接不能鏈接目錄的原因是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

友谊县| 寿阳县| 拉萨市| 伊金霍洛旗| 鸡西市| 宁都县| 萝北县| 涿鹿县| 东兰县| 衡阳县| 鄂尔多斯市| 青海省| 微山县| 沙河市| 长宁区| 汉阴县| 朔州市| 东台市| 岳阳市| 漳浦县| 资溪县| 淮滨县| 津市市| 邵武市| 蚌埠市| 扶余县| 西林县| 景德镇市| 安溪县| 焦作市| 嵊州市| 绍兴市| 中西区| 广东省| 白山市| 吐鲁番市| 玉门市| 化德县| 改则县| 涟水县| 张家界市|