Linuxでプログラムで特定の相対パスの絶対パスを取得する方法は?
Windows の場合、_fullpath()
API があります。つまり、_fullpath
Linux における Windows の類似 API とは何ですか?
Linuxでプログラムで特定の相対パスの絶対パスを取得する方法は?
Windows の場合、_fullpath()
API があります。つまり、_fullpath
Linux における Windows の類似 API とは何ですか?
ポールが述べたように、を使用します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
RedHat 5.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();
}