如何在Linux中以编程方式获取给定相对路径的绝对路径?
我们拥有_fullpath()
API。换句话说,我的意思是什么是Linux中_fullpath
的类似API?
答案 0 :(得分:19)
正如保罗所说,使用realpath()
。但请注意,由于Linux中的许多文件系统都支持hard links,因此任何给定目录都可以有许多不同的绝对路径。
答案 1 :(得分:15)
查看realpath功能。
#include <stdlib.h>
#include <stdio.h>
#include <linux/limits.h>
int main()
{
char resolved_path[PATH_MAX];
realpath("../../", resolved_path);
printf("\n%s\n",resolved_path);
return 0;
}
答案 2 :(得分:6)
答案 3 :(得分:3)
来自stdlib.h
realpath
答案 4 :(得分:1)
在RedHat 5.3上运行,realpath不存在但安装了readlink。您可以在相对路径和符号链接上使用它,此外它还将为您递归地解析符号链接。因此,在我看来,这是一个更好的选择
readlink -f .
答案 5 :(得分:0)
这也是另一种有用的方式,例如“readlink -m $ filename”
首先,它不需要存在目标文件。 其次,它将处理符号链接并获得真正的路径。
答案 6 :(得分:-1)
// For C++ with Gnome Gtkmm3 libraries
#include <glibmm.h>
#include <giomm.h>
string PathRel2Abs(string relpath) {
Glib::RefPtr<Gio::File> file = Gio::File::create_for_path(relpath);
return file->get_path();
}