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

时间:2010-02-26 13:17:16

标签: c linux relative-path absolute-path

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

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

7 个答案:

答案 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)

尝试realpath

$ man realpath

这也适用于BSD,OS X等人。

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