シンボリックリンクのリンク先や絶対パス名を取得したい
Unix 上でシンボリックリンクのリンク先を取得したい.特に何重にもリンクが重なっている場合でも,最終的なリンク先を一意に決定したい.さらに相対パスがあれば絶対パスにしたい.どうするか.
- http://okwave.jp/qa2427551.html
- http://search.luky.org/linux-users.9/msg08616.html
- http://softde.seesaa.net/article/29009868.html
#include <sys/param.h> #include <stdio.h> #include <stdlib.h> int main( int argc, char *argv[] ){ char resolved_path[MAXPATHLEN]; if ( argc < 2 ){ fprintf(stderr, "Usage: %s <pathname>\n", argv[0]); exit(1); } if ( realpath( argv[1], resolved_path) == NULL ){ perror( argv[1] ); exit(1); } printf("%s\n", resolved_path); exit(0); }
追記 (2008-01-24): Perl ワンライナーでできるそうです.素晴らしい.
つーか,Perl のモジュールって色々ありすぎてまったくわからない.みんなどうやって把握しているのだろう.