0

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

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

4

2 回答 2

1

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

于 2010-08-05T03:33:35.660 回答
0

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

于 2010-08-05T03:32:07.790 回答