std :: fstream不会打开当前进程的文件,但open()会吗?

时间:2010-08-05 03:29:22

标签: c++ fstream

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我想知道,在某个地方,std::fstream版本正在调用open - 我会打赌。您是否尝试过检查errno,或者运行strace以查看系统调用返回的是什么错误?