C語(yǔ)言symlink()函數(shù):建立文件符號(hào)連接
頭文件:
#include <unistd.h>
定義函數(shù):
int symlink(const char * oldpath, const char * newpath);
函數(shù)說(shuō)明:symlink()以參數(shù)newpath 指定的名稱(chēng)來(lái)建立一個(gè)新的連接(符號(hào)連接)到參數(shù)oldpath 所指定的已存在文件. 參數(shù)oldpath 指定的文件不一定要存在, 如果參數(shù)newpath 指定的名稱(chēng)為一已存在的文件則不會(huì)建立連接.
返回值:成功則返回0, 失敗返回-1, 錯(cuò)誤原因存于errno.
錯(cuò)誤代碼:
1、EPERM 參數(shù)oldpath 與newpath 所指的文件系統(tǒng)不支持符號(hào)連接。
2、EROFS 欲測(cè)試寫(xiě)入權(quán)限的文件存在于只讀文件系統(tǒng)內(nèi)。
3、EFAULT 參數(shù)oldpath 或newpath 指針超出可存取內(nèi)存空間。
4、ENAMETOOLONG 參數(shù)oldpath 或newpath 太長(zhǎng)。
5、ENOMEM 核心內(nèi)存不足。
6、EEXIST 參數(shù)newpath 所指的文件名已存在。
7、EMLINK 參數(shù)oldpath 所指的文件已達(dá)到最大連接數(shù)目。
8、ELOOP 參數(shù)pathname 有過(guò)多符號(hào)連接問(wèn)題。
9、ENOSPC 文件系統(tǒng)的剩余空間不足。
10、EIO I/O 存取錯(cuò)誤。
范例
#include <unistd.h>main(){ symlink("/etc/passwd", "pass");}C語(yǔ)言readlink()函數(shù):取得符號(hào)連接所指的文件
頭文件:
#include <unistd.h>
定義函數(shù):
int readlink(const char * path, char * buf, size_t bufsiz);
函數(shù)說(shuō)明:readlink()會(huì)將參數(shù)path 的符號(hào)連接內(nèi)容存到參數(shù)buf 所指的內(nèi)存空間, 返回的內(nèi)容不是以NULL作字符串結(jié)尾, 但會(huì)將字符串的字符數(shù)返回. 若參數(shù)bufsiz 小于符號(hào)連接的內(nèi)容長(zhǎng)度, 過(guò)長(zhǎng)的內(nèi)容會(huì)被截?cái)?
返回值:執(zhí)行成功則傳符號(hào)連接所指的文件路徑字符串, 失敗則返回-1, 錯(cuò)誤代碼存于errno.
錯(cuò)誤代碼:
1、EACCESS 取文件時(shí)被拒絕, 權(quán)限不夠。
2、EINVAL 參數(shù)bufsiz 為負(fù)數(shù)。
3、EIO I/O 存取錯(cuò)誤。
4、ELOOP 欲打開(kāi)的文件有過(guò)多符號(hào)連接問(wèn)題。
5、ENAMETOOLONG 參數(shù)path 的路徑名稱(chēng)太長(zhǎng)。
6、ENOENT 參數(shù)path 所指定的文件不存在。
7、ENOMEM 核心內(nèi)存不足。
8、ENOTDIR 參數(shù)path 路徑中的目錄存在但卻非真正的目錄。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注