27

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

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

4

7 回答 7

24

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

于 2010-02-26T13:22:55.207 回答
18

查看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; 
} 
于 2010-02-26T13:24:37.997 回答
6

尝试真实路径

$ man realpath

这在 BSD、OS X 等中也可用。

于 2010-02-26T13:20:10.563 回答
3

realpathstdlib.h

于 2010-02-26T13:22:01.980 回答
2

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

读取链接 -f 。
于 2012-10-10T19:07:02.207 回答
0

这也是另一种有用的方式,例如“readlink -m $filename”

首先,它不需要目标文件存在就可以工作。其次,它将处理符号链接并获得真正的路径。

于 2010-03-11T09:54:28.447 回答
-2
// 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();
}
于 2017-01-04T14:08:04.380 回答