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