是它具有一個在執行期解譯(interpreted at runtime)的較高階指標。此類連結可以跨檔
案系統—稍後馬上會看到。
硬連結
link()
系統呼叫,原本是Unix 的一個系統呼叫,不過現在是經過POSIX 標準化的系統
呼叫,可用於替現存的檔案建立一個新的連結:
#include <unistd.h>
int link (const char *oldpath, const char *newpath);
執行成功時,
link()
會替現存檔案
oldpath
以路徑
newpath
建立一個新的連結,然後會傳
回
0
。完成呼叫後,
oldpath
與
newpath
會指向同一個檔案—事實上,你無法區分哪一個
是最初的連結。
執行失敗時,此呼叫會傳回
-1
而且會把
errno
設定為下面其中一個值:
EACCESS
進行調用之行程對
oldpath
中的一個元件不具搜尋的權限,或者進行調用之行程對包
含
newpath
的目錄不具寫入的權限。
EEXIST
newpath
已經存在—
link()
無法改寫現存的目錄項目。
EFAULT
oldpath
或
newpath
是一個無效的指標。
EIO
發生了一個內部的I/O 錯誤(這是很嚴重的情況!)。
ELOOP
解析
oldpath
或
newpath
的時候遇到了太多的符號連結。
EMLINK
oldpath
所指向的inode 已經達到了可以指向它的連結數目上限。 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month, and much more.