C語言link()函數:建立檔案串連
標頭檔:
定義函數:
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");}
C語言unlink()函數:刪除檔案
標頭檔:
定義函數:
int unlink(const char * pathname);
函數說明:unlink()會刪除參數pathname 指定的檔案. 如果該檔案名稱為最後連接點, 但有其他進程開啟了此檔案, 則在所有關於此檔案的檔案描述詞皆關閉後才會刪除. 如果參數pathname 為一符號串連, 則此串連會被刪除。
傳回值:成功則返回0, 失敗返回-1, 錯誤原因存於errno
錯誤碼:
1、EROFS 檔案存在於唯讀檔案系統內。
2、EFAULT 參數pathname 指標超出可存取記憶體空間。
3、ENAMETOOLONG 參數pathname 太長。
4、ENOMEM 核心記憶體不足。
5、ELOOP 參數pathname 有過多符號串連問題。
6、EIO I/O 存取錯誤。