6

在 unix 上,符号链接是指向另一个文件的指针。不仅文件而且符号链接都有 ctime、mtime、……。我知道可以访问符号链接时间,如图ls所示。如果我使用 ruby​​ 的File#ctime, File#mtime, ... 之一,我总是得到符号链接指向的文件的属性,而不是符号链接的属性。如何在 ruby​​ 中读取这些值?如果这在 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

不仅有符号链接的属性和最终目标的属性,而且,如果符号链接本身是另一个符号链接,则还有一个或多个中间步骤;要获取所有属性,您需要在 readlink 循环中执行 lstats 。

于 2010-01-06T01:23:55.280 回答