正文

回到頂部

符號鏈接

符號鏈接的用途

符號鏈接是對一個文件的間接指針,它與前面介紹的硬連接不同,硬連接指向文件的i節(jié)點。引入符號鏈接是為了避開硬連接的一些限制:

  • 硬鏈接通常要求鏈接和文件位于同一文件系統(tǒng)中。

  • 只有超級用戶才能創(chuàng)建指向目錄的硬鏈接(在底層文件系統(tǒng)支持的情況下)。

而對于符號鏈接:

  • 對符號鏈接以及它指向何種對象并無任何文件系統(tǒng)限制;

  • 任何用戶都可以創(chuàng)建指向目錄的符號鏈接。

跟隨符號鏈接

符號鏈接一般用于將一個文件或整個目錄結(jié)構(gòu)移到系統(tǒng)中另外一個位置。
用符號鏈接作為函數(shù)參數(shù)時,需要了解該函數(shù)所處理的是否是符號鏈接指向的文件。也就是是否跟隨符號鏈接。

  • 如果該函數(shù)具有處理符號鏈接的功能,則其路徑名參數(shù)引用由符號鏈接指向的文件。

  • 否則,一個路徑名參數(shù)引用鏈接本身。

圖4-17列出了本章中所說明的各個函數(shù)是否處理符號鏈接。
萬碼學(xué)堂,電腦培訓(xùn),計算機培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

特殊的例子:
如果同時使用O_CREAT和O_EXCL,調(diào)用open函數(shù)。

  • 我們知道如果要打開的是文件,而文件已經(jīng)存在,則出錯。如果不存在則創(chuàng)建此文件,這使得測試和創(chuàng)建兩者成為一個原子操作。

  • 如果要打開的是符號鏈接,不管符號鏈接指向的文件是否存在,都會返回錯誤。這種處理方式的意圖是堵塞一個安全性漏洞,以防止具有特權(quán)的進程被誘騙寫錯誤的文件。
    例如:進程A用于寫已經(jīng)存在的A.txt文件,如果刪除A.txt文件,而把A.txt文件制作成一個符號鏈接指向自定義文件,進程就可以隨意寫任何文件了。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式