1. 程式人生 > >Linux C -> symlink 和 readlink -> 符號鏈接

Linux C -> symlink 和 readlink -> 符號鏈接

har dir 參數 存儲 不存在 ssi 連接 而不是 linu

Linux C -> symlink 和 readlink -> 符號鏈接

---------------------------------------------------------------------------------------------

  symlink() 函數創建符號連接。

  概要 POSIX

  #include <unistd.h>

  int symlink(const char *path1, const char *path2);

symlink("/root/b.out","/root/c.out");

  如果成功, symlink返回0.。否則返回-1並設置errno。

---------------------------------------------------------------------------------------------


---------------------------------------------------------------------------------------------

查看鏈接所指向的文件的名字

---------------------------------------------------------------------------------------------

int main()
{
char buf[100];
readlink("/root/c.out",buf,sizeof(buf));
printf("%s",buf);
return 0;
}
---------------------------------------------------------------------------------------------

  相關函數: stat, lstat, symlink

  表頭文件: #include <unistd.h>

  定義函數:ssize_t readlink(const char *path, char *buf, size_t bufsiz);

  函數說明:readlink()會將參數path的符號鏈接內容存儲到參數buf所指的內存空間,返回的內容不是以\000作字符串結尾,但會將字符串的字符數返回,這使得添加\000變得簡單。若參數bufsiz小於符號連接的內容長度,過長的內容會被截斷,如果 readlink 第一個參數指向一個文件而不是符號鏈接時,readlink 設 置errno 為 EINVAL 並返回 -1。 readlink()函數組合了open()、read()和close()的所有操作。

  返回值 :執行成功則返回字符串的字符數,失敗返回-1, 錯誤代碼存於errno

  執行成功則返回ssize_t

  錯誤代碼:

  EACCESS 取文件時被拒絕,權限不夠

  EINVAL 參數bufsiz為負數

  EIO O存取錯誤

  ELOOP 欲打開的文件有過多符號連接問題

  ENAMETOOLONG 參數path的路徑名稱太長

  ENOENT 參數path所指定的文件不存在

  ENOMEM 核心內存不足

  ENOTDIR 參數path路徑中的目錄存在但卻非真正的目錄

Linux C -> symlink 和 readlink -> 符號鏈接