如何获得绝对路径给予的相对路径的编程方式在Linux?

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

有帮助吗?

解决方案

正如保罗所述,使用 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:

$ man realpath

这也是可用于BSD,OS X,et al.

还有就是 realpathstdlib.h

运行在RedHat5.3,realpath不存在,但readlink安装。你可以用它在相对路径和链接,再加上这将会解决链接递归你。它是这样一个更好的选择,realpath在我的意见

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();
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top