C語言link()函式:建立檔案連線

2puT發表於2016-07-13
相關函式:symlink, unlink

標頭檔案:#include <unistd.h>

定義函式:int link (const char * oldpath, const char * newpath);

函式說明:link()以引數newpath 指定的名稱來建立一個新的連線(硬連線)到引數oldpath 所指定的已存在檔案. 如果引數newpath 指定的名稱為一已存在的檔案則不會建立連線.

返回值:成功則返回0, 失敗返回-1, 錯誤原因存於errno.

附加說明:link()所建立的硬連線無法跨越不同檔案系統, 如果需要請改用symlink().

錯誤程式碼:
1、EXDEV 引數oldpath 與newpath 不是建立在同一檔案系統.
2、EPERM 引數oldpath 與newpath 所指的檔案系統不支援硬連線
3、EROFS 檔案存在於只讀檔案系統內
4、EFAULT 引數oldpath 或newpath 指標超出可存取記憶體空間.
5、ENAMETOLLONG 引數oldpath 或newpath 太長
6、ENOMEM 核心記憶體不足
7、EEXIST 引數newpath 所指的檔名已存在.
8、EMLINK 引數oldpath 所指的檔案已達最大連線數目.
9、ELOOP 引數pathname 有過多符號連線問題
10、ENOSPC 檔案系統的剩餘空間不足.
11、EIO I/O 存取錯誤.


範例:
/* 建立/etc/passwd 的硬連線為pass */
#include <unistd.h>
main()
{
    link("/etc/passwd", "pass");
}

相關文章