如何获得绝对路径给予的相对路径的编程方式在Linux?
-
22-09-2019 - |
题
如何获得绝对路径给予的相对路径的编程方式在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
从 stdlib.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();
}
不隶属于 StackOverflow