函数原型;

#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()的所有操作。

path是一个存在的软连接。

返回值:

执行成功则返回字符串的字符数,失败返回-1, 错误代码存于errno。

 

错误代码:

EACCESS 取文件时被拒绝,权限不够

EINVAL 参数bufsiz为负数

EIO O存取错误

ELOOP 欲打开的文件有过多符号连接问题

ENAMETOOLONG 参数path的路径名称太长

ENOENT 参数path所指定的文件不存在

ENOMEM 核心内存不足

ENOTDIR 参数path路径中的目录存在但却非真正的目录

实例:

/***
readlink.c
***/
#include<stdio.h>
#include<errno.h>
#include<unistd.h> char *get_exe_path(char *buf, int count)
{
int i; int result = readlink("/home/ubuntu14-04/workspace/abcd",buf,count - );
if (result < || (result >= count - ))
{
perror("readlink ");
return NULL;
} buf[result] = '\0';
for (i = result; i >= ; i--)
{
printf("buf[%d] %c\n",i,buf[i]);
if (buf[i] == '/')
{
buf[i+] = '\0';
break;
}
} return buf;
} int main()
{
char path[];
printf("%s\n",get_exe_path(path,));
return ;
}

运行结果:

最新文章

  1. 分享自己写的JS版日期格式化和解析工具类,绝对好用!
  2. openssl evp RSA 加密解密
  3. hdf第一周完了,突然时间静止.,醒了就早点去公司上班,再努力一点
  4. 利用utl_file来读取文件.
  5. SQL with PL/SQL
  6. 基于TCP协议的服务器(单线程)
  7. IntelIoT技术笔记Java/Eclipse
  8. Java---练习(面试题) :字符串截取(1)
  9. POJ 2886 Who Gets the Most Candies? 线段树。。还有方向感
  10. 转载,find.sh
  11. EL表达式隐式对象
  12. ajax post请求request.getParameter(&quot;&quot;)取值为null
  13. expect实现自动交互由浅入深
  14. Java并发——线程介绍
  15. NPM 安装速度慢,镜像修改
  16. sizeof和strlen()区别及用法
  17. HTML5播放RTSP,H5播放RTSP,解决方案源码,基于海康网络摄像头
  18. B - 畅通工程再续 最小生成树
  19. Linux平台中使用PHP让word转pdf
  20. Xshell 无法连接虚拟机中的ubuntu的问题

热门文章

  1. RDD的转换操作,分三种:单value,双value交互,(k,v)对
  2. docker系列之二:构建docker容器
  3. elasticsearch6设置默认分片数和副本数
  4. Java学习:File类中的过滤器接口
  5. php 获取一张图片所有点的颜色值,感觉不错转载学习
  6. Kafka分区分配策略-RangeAssignor、RoundRobinAssignor、StickyAssignor
  7. html5样式初始化,你值得拥有!!
  8. FreeMarker学习系列之一
  9. 【转载】Gradle学习 第八章:依赖管理基础
  10. windows docker 安装 Kitematic