久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

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

共計(jì) 1421 個(gè)字符,預(yù)計(jì)需要花費(fèi) 4 分鐘才能閱讀完成。

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

原因:引入了對(duì)目錄的硬連接就有可能在目錄中引入循環(huán),在目錄遍歷的時(shí)候系統(tǒng)就會(huì)陷入無(wú)限循環(huán)當(dāng)中,這樣導(dǎo)致無(wú)法定位到訪問(wèn)目錄。Linux 的目錄結(jié)構(gòu)是一棵以“/ 目錄”為根節(jié)點(diǎn)的樹,如果允許自定義硬連接,則很有可能會(huì)破壞這個(gè)結(jié)構(gòu),甚至形成循環(huán);而一旦形成循環(huán),對(duì)于需要遍歷目錄樹的命令,是致命的。所以為了避免對(duì)目錄樹結(jié)構(gòu)的破壞,linux 不允許用戶自定義硬連接在目錄上。

LINUX 的硬鏈接不能鏈接到目錄是因?yàn)橐肓藢?duì)目錄的硬連接就有可能在目錄中引入循環(huán),在目錄遍歷的時(shí)候系統(tǒng)就會(huì)陷入無(wú)限循環(huán)當(dāng)中,這樣導(dǎo)致無(wú)法定位到訪問(wèn)目錄。

linux 系統(tǒng)中,每個(gè)文件 (目錄也是文件) 都對(duì)應(yīng)著一個(gè) inode 結(jié)構(gòu),其中 inode 數(shù)據(jù)結(jié)構(gòu)中包含了文件類型 (目錄,普通文件,符號(hào)連接文件等等) 的信息,也就是說(shuō)操作系統(tǒng)在遍歷目錄時(shí)可以判斷出符號(hào)連接,既然可以判斷出符號(hào)連接當(dāng)然就可以采取一些措施來(lái)防范進(jìn)入過(guò)大的循環(huán)了,系統(tǒng)在連續(xù)遇到 8 個(gè)符號(hào)連接后就停止遍歷,這就是為什么對(duì)目錄符號(hào)連接不會(huì)進(jìn)入死循環(huán)的原因了。但是對(duì)于硬連接,由于操作系統(tǒng)中采用的數(shù)據(jù)結(jié)構(gòu)和算法限制,目前是不能防范這種死循環(huán)的。

linux 硬連接的本質(zhì)

在探討問(wèn)題之前,先來(lái)談一下硬連接的本質(zhì)。

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

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

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

通過(guò)上面的例子可以發(fā)現(xiàn),一個(gè)目錄剛被創(chuàng)建時(shí)的硬連接數(shù)就為 2,其中一個(gè)來(lái)自于父目錄,另一個(gè)來(lái)自于自身的“.”。如果再給目錄創(chuàng)建一個(gè)子目錄,那么硬連接數(shù)就會(huì) + 1 變成 3,這是因?yàn)槎嗔艘粋€(gè)來(lái)自于子目錄的“..”的連接。

到這里或許有人會(huì)問(wèn),不是說(shuō)硬連接不能用于目錄么?上面的演示又是怎么回事?

這里需要澄清一個(gè)概念,“硬連接不能用于目錄”,是說(shuō)不能由用戶自定義目錄的硬連接,而只能由操作系統(tǒng)來(lái)維護(hù)。實(shí)際上目錄和硬連接是不可分隔、互為一體的。“硬連接”本身,其實(shí)就是目錄維護(hù)其子文件名 子目錄名的方式。

自定義硬連接的噩夢(mèng):循環(huán)

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

我們知道 Linux 的目錄結(jié)構(gòu)是一棵以“/ 目錄”為根節(jié)點(diǎn)的樹,如果允許自定義硬連接,則很有可能會(huì)破壞這個(gè)結(jié)構(gòu),甚至形成循環(huán),例如下面的命令如果可以執(zhí)行成功的話:

一旦形成循環(huán),對(duì)于需要遍歷目錄樹的命令,是致命的(例如從上向下遍歷的 du 命令,從下向上遍歷的 pwd 命令)。所以為了避免對(duì)目錄樹結(jié)構(gòu)的破壞,linux 不允許用戶自定義硬連接在目錄上。軟連接之所以沒(méi)有這個(gè)限制,是因?yàn)檐涍B接文件有一個(gè)專門的文件類型,可供系統(tǒng)識(shí)別,而“硬連接文件”和系統(tǒng)的正常文件沒(méi)有任何不同,無(wú)法進(jìn)行判斷。

以上就是“l(fā)inux 硬鏈接不能鏈接目錄的原因是什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,丸趣 TV 小編每天都會(huì)為大家更新不同的知識(shí),如果還想學(xué)習(xí)更多的知識(shí),請(qǐng)關(guān)注丸趣 TV 行業(yè)資訊頻道。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-13發(fā)表,共計(jì)1421字。
轉(zhuǎn)載說(shuō)明:除特殊說(shuō)明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請(qǐng)注明出處。
評(píng)論(沒(méi)有評(píng)論)
主站蜘蛛池模板: 乌审旗| 邢台县| 康保县| 汤阴县| 石门县| 舞阳县| 蓬安县| 奇台县| 兴安盟| 民和| 杭锦后旗| 弥勒县| 洛川县| 万载县| 娄烦县| 双柏县| 南雄市| 保德县| 陇川县| 丹东市| 沁阳市| 新宾| 岢岚县| 钦州市| 凤城市| 桂阳县| 宁夏| 镇宁| 淮南市| 唐河县| 历史| 康保县| 兰坪| 澄城县| 象山县| 泌阳县| 连江县| 柳河县| 吉木乃县| 天峻县| 平安县|