home «前の日記(2008-01-02) 最新 次の日記(2008-01-08)»

いろいろ
Seize the day.

2004|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|07|09|10|

2008-01-05 [長年日記]

[comp] シンボリックリンクのリンク先や絶対パス名を取得したい

Unix 上でシンボリックリンクのリンク先を取得したい.特に何重にもリンクが重なっている場合でも,最終的なリンク先を一意に決定したい.さらに相対パスがあれば絶対パスにしたい.どうするか. とりあえず readlink とか realpath とかいうコマンドがまさに使えることがわかった.しかし,手元のマシンにはそんなものは入っていないので,以下のページに載っていたソースをそのまま流用してみた.正直,手元で簡単に使うためだけのものなので,安全策は特に何もありませんし動作も保証できません(激ぉ
#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 のモジュールって色々ありすぎてまったくわからない.みんなどうやって把握しているのだろう.
このエントリーをはてなブックマークに追加 はてなブックマーク数 はてなブックマーク数 はてなブックマークコメント   このエントリーを livedoor クリップに追加 livedoor クリップ数 このエントリーを del.ici.ous に追加 このエントリーを buzzurl に追加 buzzurl クリップ数

お名前:
E-mail:
コメント:
[TrackBack URL: http://nao.s164.xrea.com/td/tb.rb/20080105]
[(注) スパム対策のため,言及リンクのないトラックバックは受け付けていません.]
本日のリンク元
その他のリンク元
検索

以下の広告はサーバによって自動的に挿入されています.


Copyright © 2004-2006, nao. All rights reserved.