プログラムでLinuxの中で与えられた相対パスの絶対パスを取得する方法?

StackOverflow https://stackoverflow.com/questions/2341808

質問

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するます:

$ man realpath

これはまた、BSD、OS X、らに利用可能である。

があります 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();
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top