在linux下,用vim,less,cat等读取文件内容的命令来查看符号链接内容,最终都会被导向到实际链接的文件。笔者对符号链接本身充满好奇,想查看下符号链接本身存储的内容,网上搜索了很久,没有找到相关的方法,于是自个儿用C语言写了一个,分享给大家。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#
include
#
include
int main(void)
{
//符号链接的路径
char sln[] =
"./test"
;
char buf[1024];
ssize_t len;
if
((len =
readlink
(sln, buf, 1024 - 1)) != -1) {
buf[len] =
'\0'
;
}
printf(
"%s\n"
, buf);
return
0;
}
|
在笔者电脑上编译执行这个程序,最终查看到符号链接本身存储内容就是链接文件的路径。例如:/home/test链接到/home/test.txt,符号链接/home/test存储的内容就是”/home/test.txt“。
补充说明
后来笔者在工作中,偶然发现readlink这个命令也可以读取符号链接本身的内容:
readlink -f test