亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

軟鏈接的block塊存儲的是源文件的什么信息?為什么不是i節點?

軟鏈接的block塊保持 的是源文件的什么信息?為什么不是i節點?我的想法來自于刪除了源文件硬鏈接還能訪問,那說明i節點的信息還在。可是為什么軟鏈接不能訪問呢?軟鏈接的block塊存儲的是什么?要識別到源文件,存儲的不應該是源文件的i節點嗎!

正在回答

3 回答

http://img1.sycdn.imooc.com//59c3c0c40001763807950241.jpg補充圖

0 回復 有任何疑惑可以回復我~

我的理解是這樣的,軟鏈接有自己的inode,指明了自己所在的block,block中存放的是源文件的文件名和inode。源文件刪除導致軟鏈接不能使用的原因是,源文件刪除后,該inode 結點的引用次數會變為0(軟鏈接的inode與源文件的inode是不同的),文件對應的block會從文件管理表中刪除,也就是說該inode 失效,因此會導致軟鏈接也不能使用。

0 回復 有任何疑惑可以回復我~
#1

慕粉1720382552

引用次數為0的話,代表文件刪除了,題主問的是為啥給一個文件分別創建硬鏈接和軟鏈接后,刪除原文件會導致軟連接失效,因為硬鏈接還在,原文件并沒有消失。真正的原因是軟鏈接的數據塊中存放的就是原文件的路徑,而不是inode號
2017-06-15 回復 有任何疑惑可以回復我~
#2

老_喵 回復 慕粉1720382552

視頻里說的是存放原文件名和inode號
2017-06-15 回復 有任何疑惑可以回復我~
#3

Sunglasses_cat 回復 老_喵

我覺得你的理解跟他們又不一樣了,倘若你這么理解那么老師就沒有說錯。 我也做了嘗試,我發現一件奇葩的事,/root/下的anaconda-ks.cfg文件創建的軟連接是無效的。。。(有圖為證) 而我先在/tmp/創建了一個anaconda-ks.cfg的硬鏈接,再創建/root/下的anaconda-ks.cfg的軟連接就有效了(此時/tmp/下分別有anaconda-ks.cfg的軟硬鏈接各一個) 然后我把/tmp/中的硬鏈接刪除,/tmp/中的軟連接就又失效了,,,這是不是證明了軟連接鏈接的是硬鏈接而不是原文件,那這么說每建立一個軟連接還得先建立一個硬鏈接嘍??
2017-09-21 回復 有任何疑惑可以回復我~

軟連接的block塊存儲的應該是源文件的路徑信息。軟鏈接可以類比windows的快捷方式,存放真實文件的路徑,訪問軟鏈接時,取到的是真實路徑信息,然后系統根據真實路徑信息繼續查找到源文件的位置。所以,當刪除了源文件,繼續訪問軟鏈接時,同樣能拿到一個原先的真實路徑信息,但根據真實路徑信息查找時,已經找不到源文件了。

0 回復 有任何疑惑可以回復我~
#1

慕粉1720382552

正解。軟鏈接的數據塊中存放的就是原文件的路徑,而不是inode號,從創建軟鏈接時要使用絕對路徑就能看出來。如果存放的是inode號,那么就不會出現~~不使用絕對路徑時軟鏈接會自動鏈接到同級目錄下的同名文件的錯誤了。而且如果存放的是inode號,我感覺會比較浪費系統資源,畢竟文件很多。
2017-06-15 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

軟鏈接的block塊存儲的是源文件的什么信息?為什么不是i節點?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號