詳解C語言中symlink()函數(shù)和readlink()函數(shù)的使用
C語言symlink()函數(shù):建立文件符號連接
頭文件:
#include <unistd.h>
定義函數(shù):
int symlink(const char * oldpath, const char * newpath);
函數(shù)說明:symlink()以參數(shù)newpath 指定的名稱來建立一個新的連接(符號連接)到參數(shù)oldpath 所指定的已存在文件. 參數(shù)oldpath 指定的文件不一定要存在, 如果參數(shù)newpath 指定的名稱為一已存在的文件則不會建立連接.
返回值:成功則返回0, 失敗返回-1, 錯誤原因存于errno.
錯誤代碼:
1、EPERM 參數(shù)oldpath 與newpath 所指的文件系統(tǒng)不支持符號連接。
2、EROFS 欲測試寫入權(quán)限的文件存在于只讀文件系統(tǒng)內(nèi)。
3、EFAULT 參數(shù)oldpath 或newpath 指針超出可存取內(nèi)存空間。
4、ENAMETOOLONG 參數(shù)oldpath 或newpath 太長。
5、ENOMEM 核心內(nèi)存不足。
6、EEXIST 參數(shù)newpath 所指的文件名已存在。
7、EMLINK 參數(shù)oldpath 所指的文件已達到最大連接數(shù)目。
8、ELOOP 參數(shù)pathname 有過多符號連接問題。
9、ENOSPC 文件系統(tǒng)的剩余空間不足。
10、EIO I/O 存取錯誤。
范例
#include <unistd.h>
main()
{
symlink("/etc/passwd", "pass");
}
C語言readlink()函數(shù):取得符號連接所指的文件
頭文件:
#include <unistd.h>
定義函數(shù):
int readlink(const char * path, char * buf, size_t bufsiz);
函數(shù)說明:readlink()會將參數(shù)path 的符號連接內(nèi)容存到參數(shù)buf 所指的內(nèi)存空間, 返回的內(nèi)容不是以NULL作字符串結(jié)尾, 但會將字符串的字符數(shù)返回. 若參數(shù)bufsiz 小于符號連接的內(nèi)容長度, 過長的內(nèi)容會被截斷.
返回值:執(zhí)行成功則傳符號連接所指的文件路徑字符串, 失敗則返回-1, 錯誤代碼存于errno.
錯誤代碼:
1、EACCESS 取文件時被拒絕, 權(quán)限不夠。
2、EINVAL 參數(shù)bufsiz 為負數(shù)。
3、EIO I/O 存取錯誤。
4、ELOOP 欲打開的文件有過多符號連接問題。
5、ENAMETOOLONG 參數(shù)path 的路徑名稱太長。
6、ENOENT 參數(shù)path 所指定的文件不存在。
7、ENOMEM 核心內(nèi)存不足。
8、ENOTDIR 參數(shù)path 路徑中的目錄存在但卻非真正的目錄。
相關(guān)文章
C++深入講解new與deleted關(guān)鍵字的使用
這篇文章主要介紹了C++中new與deleted關(guān)鍵字的使用,new在動態(tài)內(nèi)存中為對象分配空間并返回一個指向該對象的指針;delete接受一個動態(tài)對象的指針, 銷毀該對象, 并釋放與之關(guān)聯(lián)的內(nèi)存2022-05-05
分享一段代碼,一個靜態(tài)鏈表的C語言實現(xiàn),其中包含著一種簡單的內(nèi)存管理策略:固定大小的鏈?zhǔn)焦芾怼?/div> 2013-03-03
C語言 ffmpeg與sdl實現(xiàn)播放視頻同時同步時鐘詳解
使用ffmpeg和sdl實現(xiàn)播放視頻后,需要再實現(xiàn)時鐘同步才能正常的播放視頻,尤其是有音頻的情況,我們通常需要將視頻同步到音頻來確保音畫同步2022-09-09
C++實現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序
這篇文章主要為大家詳細介紹了C++實現(xiàn)插入排序?qū)φ麛?shù)數(shù)組排序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-05-05最新評論

