readlink()函数读取符号结果不一致问题

readlink()函数用于读取相关路径下的连接符号,并将其存储于buf中,但在某种情况下也会存在读取连接符号并非是我们预期所要结果,今天我们介绍一下这种情况。

#include <unistd.h>

ssize_t readlink(const char *path, char *buf, size_t bufsiz);

readlink()函数具体功能不在介绍。

现在我们列举/proc/self/exe目录下的符号连接情况。

[ ****self]$ pwd

/proc/self

[ ****self]  ls -l /proc/self/exe
lrwxrwxrwx. 1 ***  *** 0 Sep 17 01:00 /proc/self/exe -> /bin/ls

可以看出/proc/self/exe 存在边接符号,
readlink(“/proc/self/exe”, char *buf, size_t bufsiz);

执行结果,buf中存在字符结果为/bin/ls

但实际结果为:/home/***/readlink

所以readlink 在读取/proc/self/exe时会存在符号的不确定性,

/proc/self本身为当前运行进程ID的符号链接. readlink在读取此方面边接时要注意当前目录的变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值