【问题标题】:Resolve symlinks with boost filesystem使用 boost 文件系统解析符号链接
【发布时间】:2011-12-07 15:36:52
【问题描述】:

我希望有一种简单的方法可以做到这一点,但即使经过一番激烈的谷歌搜索,我也无法发现这一点。

如何使用 boost::filesystem 找到符号链接(在 *nix 系统上)指向的位置?

【问题讨论】:

    标签: c++ linux boost filesystems


    【解决方案1】:

    如果您使用的是 boost::filesystem 的 v3,您可以使用 canonical 函数来获取已解析所有符号链接的路径。这可能适用于解析符号链接的路径。

    例如,如果 sym.link 是符号链接:

    boost::filesystem::path resolved = boost::filesystem::canonical( 'sym.link' );
    

    我实际上并没有尝试过,所以我可能是错的,但似乎有道理。

    或者,您可能会遇到read_symlink 的运气

    【讨论】:

      【解决方案2】:

      您可以使用版本3的read_symlink()功能:

      path read_symlink(const path& p);
      path read_symlink(const path& p, system::error_code& ec);
      

      返回:如果p 解析为符号链接,则为包含该符号链接内容的路径对象。否则为空路径对象。

      抛出:如错误报告中所述。 [注意:如果 p 不解析为符号链接,则会出错。 -- 尾注]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-24
        • 1970-01-01
        • 2016-09-17
        • 1970-01-01
        相关资源
        最近更新 更多