readlink()函数用于读取相关路径下的连接符号,并将其存储于buf中,但在某种情况下也会存在读取连接符号并非是我们预期所要结果,今天我们介绍一下这种情况。
#include <unistd.h>
ssize_t readlink(const char *path, char *buf, size_t bufsiz);
readlink()函数具体功能不在介绍。
现在我们列举/proc/self/exe目录下的符号连接情况。
/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时会存在符号的不确定性,