Linuxでプログラムによって特定の相対パスの絶対パスを取得する方法は?
Windowsの場合、_fullpath()
APIがあります。つまり、LinuxのWindowsの_fullpath
に類似したAPIとは何ですか?
Paulが述べたように、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がインストールされます。相対パスとシンボリックリンクで使用でき、さらにシンボリックリンクを再帰的に解決します。したがって、私の意見では実際のパスよりも良いオプションです
readlink -f。
「readlink -m $ filename」のようなもう1つの便利な方法です
まず、ターゲットファイルが存在していなくても機能します。次に、シンボリックリンクを処理し、実際のパスを取得します。