プログラムでLinuxの中で与えられた相対パスの絶対パスを取得する方法?
-
22-09-2019 - |
質問
Linuxでは、プログラムで指定した相対パスの絶対パスを取得するには?
のWindowsの包みなさい、我々は_fullpath()
のAPIを持っています。言い換えれば、私は、LinuxでのWindowsの_fullpath
に類似APIとは何か意味ですか?
解決
としてポールは、使用realpath()
を述べました。 href="http://en.wikipedia.org/wiki/Hard_link" rel="noreferrer">ハードリンクをするので、かかわらず、任意のディレクトリを持つことができます注意をしてくださいということ異なる絶対パスの数。
他のヒント
の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上で実行
は、実パスは存在しませんが、READLINKがインストールされています。あなたは、相対パスやシンボリックリンクでそれを使用することができ、それに加えて再帰的にあなたのためのシンボリックリンクを解決します。それは、このように良いオプションだというのが私の意見でのrealpath
readlink -f .
のように、また別の有用な方法である "READLINK -m $ファイル名"
まず、それが存在する対象のファイルを必要とせずに動作します。 第二に、それはシンボリックリンクを処理し、実際に実際のパスを取得します。
// 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