web-dev-qa-db-ja.com

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

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

Windowsの場合、_fullpath() AP​​Iがあります。つまり、LinuxのWindowsの_fullpathに類似したAPIとは何ですか?

19
Jay

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

17
unwind

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; 
} 
14
Martin Wickman

試してみてください realpath

$ man realpath

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

6
Paul R

realpathstdlib.hからあります

3

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

 readlink -f。
1
Lionel

「readlink -m $ filename」のようなもう1つの便利な方法です

まず、ターゲットファイルが存在していなくても機能します。次に、シンボリックリンクを処理し、実際のパスを取得します。

0
Zebooka