用boost文件系统解析符号链接

Resolve symlinks with boost filesystem

本文关键字:符号链接 文件系统 boost      更新时间:2023-10-16

我希望有一种简单的方法来做到这一点,但我没有能够发现这一点,即使一些激烈的谷歌。

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

如果您使用的是boost::filesystem的v3版本,您可以使用规范化函数来获得所有符号链接解析的路径。这可能适用于解析符号链接的路径。

例如,如果symm .link是一个符号链接:

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

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

或者,您可以使用read_symlink

您可以使用版本3的read_symlink()函数:

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

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

抛出:与错误报告中指定的一样。[注:如果p不解析为符号链接,则会产生错误。]