我正在尝试打开当前进程的可执行文件以进行读写操作(我有附加到可执行文件的附加数据),但是std :: fstream不会在ios :: in中打开文件。 ios :: out | ios :: binary模式,即使open()也会(设置O_RDWR标志)。
有谁知道为什么std :: fstream不会打开文件,而open()会这样,如果是这样,我怎么能让std :: fstream打开文件?
答案 0 :(得分:1)
它很可能与文件共享语义有关。请参阅处理类似问题的this thread - 答案是“文件保护,文件共享,文件权限的概念是特定于操作系统的,这就是标准C ++未涵盖的原因”。
答案 1 :(得分:0)
我想知道,在某个地方,std::fstream
版本正在调用open
- 我会打赌。您是否尝试过检查errno,或者运行strace
以查看系统调用返回的是什么错误?