【问题标题】:How to make ifstream follow symbolic link?如何使 ifstream 跟随符号链接?
【发布时间】:2016-06-21 09:53:40
【问题描述】:

在我的 C++ 程序中,我使用的是ifstream("/etc/mtab", ios::ate|ios:in)。一年前该程序运行良好,但现在ifstream::is_open() 返回错误。通过挖掘我发现/etc/mtab/proc/mounts 的符号链接

--更新--

/proc/mounts 又是一个指向/proc/self/mounts 的符号链接,它是实际文件。我无法成功打开这个想法,我正在以 root 用户身份运行程序。所以可能是 ifstream 正在跟随符号链接并且无法打开/proc/self/mounts

【问题讨论】:

  • 你能cat(或hexdumpmd5sum或其他)文件吗?
  • 报告什么错误? stackoverflow.com/a/17338934/1116364
  • @5gon12eder 我以普通用户的身份收藏文件
  • @DanielJour ifstream::is_open() 返回 false。
  • 您能否发布在所有涉及的符号链接和文件上运行stat 的输出以及在您的设置中展示该行为的最小代码示例?哦,还要检查stream.good() 返回的内容!还要检查你是否不小心从流中移动(你是否切换到 C++11)

标签: linux symlink c++


【解决方案1】:

虽然没有直接回答如何使用std::fstream 解析符号链接,但文件系统库是introduced by C++ 17(在打开此问题时不可用)

它可以通过以下方式处理符号链接:

注意文件系统库也是available in boost

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多