link() - Unix,Linux系統呼叫 - 技術教學
Tutorials Point


  Unix入門
  Unix Shell程式設計
  高階Unix
  Unix有用參考
  Unix有用資源
  精選閱讀

版權所有 © 2014 tutorialspoint



  首頁     參考資料     討論論壇     關於TP  

link() - Unix,Linux系統呼叫


previous next AddThis Social Bookmark Button

廣告

名稱

link - 為檔案建立新名稱

概要

#include <unistd.h>

int link(const char *oldpath, const char *newpath);

描述

link() 建立一個到現有檔案的新連結(也稱為硬連結)。

如果newpath存在,則不會被覆蓋。

此新名稱可用於任何操作,其用法與舊名稱完全相同;這兩個名稱都引用同一個檔案(因此具有相同的許可權和所有權),無法區分哪個名稱是“原始”名稱。

返回值

成功時,返回零。失敗時,返回 -1,並相應地設定errno

錯誤

標籤描述
EACCES 拒絕寫入包含newpath的目錄的訪問許可權,或者拒絕搜尋oldpathnewpath路徑字首中的一個目錄的搜尋許可權。(另請參見path_resolution(2)。)
EEXIST newpath已存在。
EFAULT oldpathnewpath指向您可訪問的地址空間之外。
EIO 發生I/O錯誤。
ELOOP 在解析oldpathnewpath時遇到太多符號連結。
EMLINK oldpath引用的檔案已達到其最大連結數。
ENAMETOOLONG
  oldpathnewpath太長。
ENOENT oldpathnewpath中的目錄元件不存在或是不存在的符號連結。
ENOMEM 可用核心記憶體不足。
ENOSPC 包含該檔案的裝置沒有足夠空間用於新的目錄條目。
ENOTDIR
 oldpathnewpath中用作目錄的元件實際上不是目錄。
EPERM oldpath是一個目錄。
EPERM 包含oldpathnewpath的檔案系統不支援建立硬連結。
EROFS 該檔案位於只讀檔案系統上。
EXDEV oldpathnewpath不在同一個已掛載的檔案系統上。(Linux允許將檔案系統掛載到多個點,但link(2)不適用於不同的掛載點,即使同一個檔案系統同時掛載在這兩個點上也是如此。)

備註

link()建立的硬連結不能跨越檔案系統。如果需要這樣做,請使用symlink()。

POSIX.1-2001規定,如果oldpath是符號連結,則link()應該取消引用oldpath。但是,Linux不會這樣做:如果oldpath是符號連結,則newpath被建立為指向相同符號連結檔案的(硬)連結(即,newpath成為指向與oldpath引用的檔案相同的符號連結)。一些其他實現的行為與Linux相同。

符合標準

SVr4、4.3BSD、POSIX.1-2001(除上述說明外)。

缺陷

在NFS檔案系統上,如果NFS伺服器執行連結建立並在發出確認之前崩潰,則返回程式碼可能錯誤。使用stat(2)來確定連結是否已建立。

參見



previous next Printer Friendly

廣告


  

廣告



廣告