代码之家  ›  专栏  ›  技术社区  ›  johannes

如何访问符号链接的CTIME、MTIME和塤E?

  •  6
  • johannes  · 技术社区  · 16 年前

    在Unix上,符号链接是指向另一个文件的指针。不仅文件,而且symlink还有一个ctime、mtime和。我知道可以访问符号链接时间,如 ls 显示它。如果我用Ruby的 File#ctime , File#mtime ,_,我总是得到symlink指向的文件的属性,而不是symlink的属性。如何在Ruby中读取这些值?如果这在Ruby中是不可能的,请告诉我如何在C中实现它。在这种情况下,我将编写自己的C扩展。

    3 回复  |  直到 16 年前
        1
  •  10
  •   John Feminella    16 年前

    使用 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
    
        2
  •  1
  •   Ignacio Vazquez-Abrams    16 年前

    lstat() 可以在C语言中完成;不确定是否有Ruby等价物。

        3
  •  1
  •   ysth    16 年前

    不仅有symlink的属性和最终目标的属性,而且,如果symlink本身就是另一个symlink的一个或多个中间步骤;要获得所有属性,需要在readlink循环中执行lstats。

    推荐文章