コマンド
realpath
相対パスを絶対パスに展開する
realpath コマンドは、相対パスを絶対パスに変換するコマンドである。また、以下の処理も行う。
- シンボリックリンクをたどる
- ../ や ./ を削除
- // (/ を複数重ねる) を / に変換
要は、ファイル名の正規化を行うわけである。
% realpath ../
/usr/home/user
関数
realpath
相対パスを絶対パスに変換する。
. や .. やシンボリックリンクを展開し、相対パスを絶対パスに置換する。
引数として渡すファイル・ディレクトリ名は、存在しないファイル・ディレクトリであっても構わない。
#include <sys/param.h>
#include <stdio.h>
#include <stdlib.h>
main(){
char resolved_path[MAXPATHLEN];
if ( realpath("../../foo/hoge", resolved_path) == NULL ){
perror("hoge");
exit(1);
}
printf("%s\n", resolved_path);
exit(0);
}