27

Linuxでプログラムで特定の相対パスの絶対パスを取得する方法は?

Windows の場合、_fullpath()API があります。つまり、_fullpathLinux における Windows の類似 API とは何ですか?

4

7 に答える 7

24

ポールが述べたように、を使用しますrealpath()ただし、Linux の多くのファイル システムはハード リンクをサポートしているため、任意のディレクトリに多数の異なる絶対パスを設定できることに注意してください。

于 2010-02-26T13:22:55.207 に答える
18

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; 
} 
于 2010-02-26T13:24:37.997 に答える
6

realpath を試してください:

$ man realpath

これは、BSD、OS X などでも利用できます。

于 2010-02-26T13:20:10.563 に答える
3

realpathからがありますstdlib.h

于 2010-02-26T13:22:01.980 に答える
2

RedHat 5.3 で実行すると、realpath は存在しませんが、readlink がインストールされます。相対パスとシンボリックリンクで使用でき、さらにシンボリックリンクを再帰的に解決します。したがって、私の意見では realpath よりも優れたオプションです

readlink -f .
于 2012-10-10T19:07:02.207 に答える
0

「readlink -m $filename」のような別の便利な方法もあります

まず、対象ファイルが存在しなくても動作します。次に、シンボリック リンクを処理し、実際のパスを取得します。

于 2010-03-11T09:54:28.447 に答える
-2
// 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();
}
于 2017-01-04T14:08:04.380 に答える