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

发布于 2024-08-23 19:33:05 字数 147 浏览 10 评论 0原文

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

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

How to get the absolute path for a given relative path programmatically in Linux?

Incase of Windows we have the _fullpath() API. In other words, I mean what is analogous API to _fullpath of Windows in Linux?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

我为君王 2024-08-30 19:33:06

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

As Paul mentioned, use realpath(). Please note though, that since many file systems in Linux support hard links, any given directory can have a number of different absolute paths.

浅语花开 2024-08-30 19:33:06

查看 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; 
} 

Check out the realpath function.

#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; 
} 
尾戒 2024-08-30 19:33:06

尝试 realpath

$ man realpath

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

Try realpath:

$ man realpath

This is also available in BSD, OS X, et al.

转身以后 2024-08-30 19:33:06

有来自 stdlib 的 realpath。 h

There is the realpath from stdlib.h

筱武穆 2024-08-30 19:33:06

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

readlink -f .

Running on RedHat 5.3, realpath doesn't exist but readlink is installed. You can use it on relative paths and symlinks, plus it will resolve symlinks recursively for you. It's thus a better option that realpath in my opinion

readlink -f .
白芷 2024-08-30 19:33:06

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

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

The is also another useful way, like "readlink -m $filename"

First of all, it works without requirement for target file to exist.
Secondly, it will handle symlinks and get really real path.

南街女流氓 2024-08-30 19:33:06
// 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();
}
// 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();
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文