Linux的硬鏈接和軟鏈接:
硬連接是不會建立inode的,他只是在文件原來的inode link count域再增加1而已,也因此硬鏈接是不可以跨越文件系統的。相反都是軟連接會重新建立一個inode,當然inode的結構跟其他的不一樣,他只是一個指明源文件的字符串信息。一旦刪除源文件,那麼軟連接將變得毫無意義。而硬鏈接刪除的時候,系統調用會檢查inode link count的數值,如果他大於等於1,那麼inode不會被回收。因此文件的內容不會被刪除。
硬鏈接實際上是爲文件建一個別名,鏈接文件和原文件實際上是同一個文件。可以通過ls -i來查看一下,這兩個文件的inode號是同一個,說明它們是同一個文件;而軟鏈接建立的是一個指向,即鏈接文件內的內容是指向原文件的指針,它們是兩個文件。
軟鏈接可以跨文件系統,硬鏈接不可以;軟鏈接可以對一個不存在的文件名(filename)進行鏈接(當然此時如果你vi這個軟鏈接文件,linux會自動新建一個文件名爲filename的文件),硬鏈接不可以(其文件必須存在,inode必須存在);軟鏈接可以對目錄進行連接,硬鏈接不可以。兩種鏈接都可以通過命令 ln 來創建。ln 默認創建的是硬鏈接。使用 -s 開關可以創建軟鏈接。
總結:( 1 )軟連接可以跨文件系統,硬連接不可以
( 2 )硬連接不管有多少個,都指向的是同一個 I 節點,會把結點連接數增加,只要結點的連接數不是 0 ,文件就一直存在不管你刪除的是源文件還是連接的文件。只要有一個存在文件就存在。 當你修改源文件或者連接文件任何一個的時候,其他的文件都會做同步的修改。軟鏈接不直接使用 i 節點號作爲文件指針 , 而是使用文件路徑名作爲指針。所以刪除連接文件對源文件無影響,但是刪除源文件,連接文件就會找不到要指向的文件。軟鏈接有自己的 i 節點 , 並在磁盤上有一小片空間存放路徑名。
( 3 )軟連接可以對一個不存在的文件名進行連接 。
( 4 )軟連接可以對目錄進行連接。
算法的時間複雜度取決於:
待處理數據的狀態
問題的規模