【问题标题】:std::fstream will not open current process's file, but open() will?std::fstream 不会打开当前进程的文件,但是 open() 会吗?
【发布时间】:2010-08-05 03:29:22
【问题描述】:

我正在尝试打开当前进程的可执行文件以进行读写操作(我在可执行文件中附加了其他数据),但是 std::fstream 不会在 ios::in | 中打开文件ios::out | ios::binary 模式,即使 open() 会(设置了 O_RDWR 标志)。

有谁知道为什么 std::fstream 不会打开文件,而 open() 会,如果是,我怎样才能让 std::fstream 打开文件?

【问题讨论】:

    标签: c++ fstream


    【解决方案1】:

    这很可能与文件共享语义有关。请参阅处理类似问题的this thread - 答案是“文件保护、文件共享、文件权限的概念是特定于操作系统的,这就是标准 C++ 未涵盖它的原因”。

    【讨论】:

    • 是的,我怀疑我可能必须为它编写自己的 I/O 类,它在下面使用 open()、read()、write() 等。这并不重要,因为我需要对每个块进行缓存,因为它是针对文件系统的。
    【解决方案2】:

    我想知道std::fstream 版本是否在某个地方调用open - 我敢打赌。您是否尝试过检查 errno,或者运行 strace 来查看系统调用返回了什么(如果有任何错误)?

    【讨论】:

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