如何在 Linux 中以编程方式获取给定相对路径的绝对路径?
如果是 Windows,我们有_fullpath()
API。换句话说,我的意思是_fullpath
Linux 中类似于 Windows 的 API 是什么?
如何在 Linux 中以编程方式获取给定相对路径的绝对路径?
如果是 Windows,我们有_fullpath()
API。换句话说,我的意思是_fullpath
Linux 中类似于 Windows 的 API 是什么?
正如保罗所说,使用realpath()
. 但请注意,由于 Linux 中的许多文件系统都支持硬链接,因此任何给定目录都可以有许多不同的绝对路径。
查看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;
}
有realpath
从stdlib.h
在 RedHat 5.3 上运行,realpath 不存在,但已安装 readlink。您可以在相对路径和符号链接上使用它,而且它会递归地为您解析符号链接。因此,在我看来,realpath 是一个更好的选择
读取链接 -f 。
这也是另一种有用的方式,例如“readlink -m $filename”
首先,它不需要目标文件存在就可以工作。其次,它将处理符号链接并获得真正的路径。
// 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();
}