码迷,mamicode.com
首页 > 系统相关 > 详细

Linux C -> symlink 和 readlink -> 符号链接

时间:2017-11-07 22:11:54      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:而不是   include   失败   dir   path   std   过多   close   size   

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 -> 符号链接

标签:而不是   include   失败   dir   path   std   过多   close   size   

原文地址:http://www.cnblogs.com/wangjian8888/p/7800938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!