如何获得符号链接的绝对路径?

Kin*_*ann 5 c

如何获得符号链接的绝对路径?如果我按以下方式执行此操作:

char buf[100];
realpath(symlink, buf);
Run Code Online (Sandbox Code Playgroud)

我不会得到符号链接的绝对路径,但我会得到这个符号链接链接到的绝对路径.现在我的问题是:如果我想获得符号链接本身的abs路径怎么办?Linux c中有没有允许我这样做的功能?注意:我想要实现的是符号链接本身的绝对路径.不是它指向的路径!例如,smybolic链接的相对路径是:Task2/sym_lnk,我想要它的abs路径,可以是:home/user/kp/Task2/sym_lnk

Har*_*ris 1

您可以使用系统调用readlink()

int readlink(const char* fdpath, char* filepath, size_t pathsize);
Run Code Online (Sandbox Code Playgroud)

fdpathpath符号链接的 ,类似于/proc/pid/fd/link_number

filepath是它指向的文件的路径。

请注意,readlink()不会以 null 终止输出字符串,但会在返回值中报告其长度。