如何在Linux中以编程方式获取给定相对path的绝对path?

如何在Linux中以编程方式获取给定相对path的绝对path?

在Windows中,我们有_fullpath()API。 换句话说,我的意思是什么是Linux的_fullpath类似的API?

Solutions Collecting From Web of "如何在Linux中以编程方式获取给定相对path的绝对path?"

正如Paul所说,使用realpath() 。 但请注意,由于Linux中的许多文件系统都支持硬链接 ,因此任何给定的目录都可以有多个不同的绝对路径。

检查真实路径功能。

 #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 :

 $ man realpath 

这在BSD,OS X等中也是可用的。

stdlib.h

在RedHat 5.3上运行,realpath不存在,但安装了readlink。 您可以在相对路径和符号链接上使用它,而且它会递归地为您解析符号链接。 因此,在我看来,这是一个更好的选择

 readlink -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(); }