问题描述
我看过很多类似的主题,阅读了很多readlink和realpath,但是问题是我需要pliksoft的路径,而不是此链接指向的位置。
例如:
结果应为:
/ users / staff / trl / am / SK / pliksoft
不是
/ users / staff / trl / am / SK / abc
我这样做,
char buf[PATH_MAX],buf_2[PATH_MAX];
readlink(argv[1],buf,PATH_MAX);
realpath(buf,buf_2);
printf("%s\n",buf_2);
但这就是一个不好的结果。
解决方法
我想您正在尝试:
#include <libgen.h>
#include <limits.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int
main(int argc,char **argv)
{
char buf[PATH_MAX];
char *path = argc > 1 ? argv[1] : "foo";
realpath(dirname(path),buf);
printf("%s/%s -> ",buf,basename(path));
realpath(path,buf);
printf("%s\n",buf);
return 0;
}