6

UNIX では、シンボリック リンクは別のファイルへのポインタです。ファイルだけでなく、シンボリックリンクにもctime、mtime、…があります。表示されているように、シンボリックリンクの時間にアクセスできることはわかっていlsます。ruby のFile#ctime, File#mtime, … のいずれかを使用すると、シンボリックリンクではなく、シンボリックリンクが指しているファイルの属性を常に取得します。この値をルビーで読み取るにはどうすればよいですか? Ruby でこれができない場合は、C で行う方法を教えてください。その場合は、独自の C 拡張機能を作成します。

4

3 に答える 3

10

を使用しFile#lstat()ます。例:

# This is a dummy symlink; there's no file named "foo".
ln -s foo bar

# Run irb.
irb(main):001:0> File.lstat("bar")
=> #<File::Stat dev=0x801, ino=90113, mode=0120777, nlink=1, uid=1000, gid=1000, rdev=0x0, size=3, blksize=4096, blocks=0, atime=2010-01-05 17:59:06 -0500, mtime=2010-01-05 17:59:05 -0500, ctime=2010-01-05 17:59:05 -0500>

# Get the mtime of the link.
irb(main):002:0> File.lstat("bar").mtime
=> 2010-01-05 17:59:05 -0500
于 2010-01-05T23:02:10.857 に答える
1

lstat()Cでそれを行うことができます。Rubyに相当するものがあるかどうかはわかりません。

于 2010-01-05T23:00:04.557 に答える
1

シンボリックリンクの属性と最終ターゲットの属性だけでなく、シンボリックリンク自体が別のシンボリックリンクへの場合、1 つ以上の中間ステップがあります。すべての属性を取得するには、readlink ループで lstats を実行する必要があります。

于 2010-01-06T01:23:55.280 に答える