2

それが指しているリンクの絶対パスを取得することは可能ですか? 簡単なシステムコマンドはありますか?

次のすべての OS が必要 HP-UX 11i、1123u、1123i AIX 5.2 および 5.3 Suse Linux 10 Solaris 10

4

2 に答える 2

5

言語を指定しなかったので、使用しているシェルで実行できるコマンドが必要だと思います。このlsコマンドには-l、ファイルに関する多くの情報を出力する(つまり、ell)オプションがあります。情報の最後のビットはフルパスなので、次のように言うことができるはずです

ls -l file | awk '{print $NF}'

SUS2準拠のマシン(すべての商用UNIXである必要があります)。ただし、ファイルまたはファイルにつながるディレクトリのいずれかにスペースがある場合、これには問題があります。

于 2009-04-10T15:59:09.687 に答える
2

システム コールを探している場合は、readlink(2). これは標準化されているため、すべての POSIX 準拠システムで利用できるはずです。

以下は、以前に提供されたリンクから取得した使用例です。

#include <unistd.h>

char buf[1024];
ssizet_t len;

if ((len = readlink("/modules/pass1", buf, sizeof(buf)-1)) != -1)
    buf[len] = '\0';

コマンド ライン ユーティリティを探している場合、標準化されているものはないように見えますが、GNU (Linux) とBSDの両方にreadlink(1).

于 2009-04-10T15:06:35.040 に答える