【问题标题】:How do I set the mtime of a symlink in TCL?如何在 TCL 中设置符号链接的 mtime?
【发布时间】:2020-09-22 08:09:10
【问题描述】:

file mtime可以用来设置文件的修改时间。但如果是符号链接,它将设置目标的 mtime。如何设置符号链接本身的 mtime?

【问题讨论】:

    标签: tcl symlink filemtime


    【解决方案1】:

    到目前为止,最简单的方法是运行external command

    proc SetMtime {filename timestamp} {
        # A little bit of type enforcement; it's not necessary, but avoids potential trouble
        exec touch -h -t [expr {int($timestamp)}] [file normalize $filename]
    }
    

    这是因为 Tcl 不提供对 utimensat(2) 系统调用(或其包装器,lutimes(3))的任何本机访问。您可以在 Tcl 扩展中创建自己的访问函数(直接,或使用 Critcl 或 SWIG),但对于偶尔设置单个链接,使用 -h 选项调用 touch 是最简单的。

    【讨论】:

    • 我之所以对此进行调查,部分原因是-h 并非在touch 的所有实现中都可用。
    • 是的,但是在没有它的操作系统上,这可能是因为底层操作系统也不支持该功能。在这一点上,实际上没有任何解决方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-19
    • 1970-01-01
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    相关资源
    最近更新 更多