【问题标题】:How to acess ctime, mtime, … of a symbolic link?如何访问符号链接的 ctime、mtime、……?
【发布时间】:2010-01-05 22:56:10
【问题描述】:

在 unix 上,符号链接是指向另一个文件的指针。不仅文件而且符号链接都有 ctime、mtime、...。我知道可以访问符号链接时间,因为ls 显示它。如果我使用 ruby​​ 的File#ctimeFile#mtime、...之一,我总是得到符号链接指向的文件的属性,而不是符号链接的属性。如何在 ruby​​ 中读取这些值?如果这在 ruby​​ 中是不可能的,请告诉我如何在 C 中做到这一点。在这种情况下,我会编写自己的 c 扩展。

【问题讨论】:

    标签: c ruby unix filesystems symlink


    【解决方案1】:

    使用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】:

      lstat() 可以在 C 中实现;不确定是否有 Ruby 等价物。

      【讨论】:

      • ruby 中似乎有一个File.lstat,它的作用相同。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-02
        • 2016-04-19
        • 1970-01-01
        • 2012-07-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多