1 回答

TA貢獻1810條經(jīng)驗 獲得超4個贊
頭文件
#include <unistd.h>
函數(shù)原型
int link (const char * oldpath,const char * newpath);
說明
link()以參數(shù)newpath指定的名稱來建立一個新的連接(硬連接)到參數(shù)oldpath所指定的已存在文件。如果參數(shù)newpath指定的名稱為一已存在的文件則不會建立連接。函數(shù)在執(zhí)行成功時則返回0,失敗時則返回-1,錯誤原因存于errno。 link()所建立的硬連接無法跨越不同文件系統(tǒng),如果需要請改用symlink()。
errno錯誤代碼:
EXDEV 參數(shù)oldpath與newpath不是建立在同一文件系統(tǒng)。
EPERM 參數(shù)oldpath與newpath所指的文件系統(tǒng)不支持硬連接
EROFS 文件存在于只讀文件系統(tǒng)內(nèi)
EFAULT 參數(shù)oldpath或newpath 指針超出可存取內(nèi)存空間。
ENAMETOLLONG 參數(shù)oldpath或newpath太長
ENOMEM 核心內(nèi)存不足
EEXIST 參數(shù)newpath所指的文件名已存在。
EMLINK 參數(shù)oldpath所指的文件已達最大連接數(shù)目。
ELOOP 參數(shù)pathname有過多符號連接問題
ENOSPC 文件系統(tǒng)的剩余空間不足。
EIO I/O 存取錯誤。
范例
/* 建立/etc/passwd 的硬連接為pass */ #include<unistd.h>main(){link(/etc/passwd,pass);}
添加回答
舉報