我试图打开当前进程的可执行文件的读写操作(我有附加到可执行文件的附加数据),但是std :: fstream不会打开文件在ios :: in | ios :: out | ios ::二进制模式,尽管open()会(设置O_RDWR标志)。std :: fstream不会打开当前进程的文件,但open()会?
有没有人知道为什么std :: fstream不会打开文件,而open()会,如果是的话,我如何获得std :: fstream来打开文件?
我试图打开当前进程的可执行文件的读写操作(我有附加到可执行文件的附加数据),但是std :: fstream不会打开文件在ios :: in | ios :: out | ios ::二进制模式,尽管open()会(设置O_RDWR标志)。std :: fstream不会打开当前进程的文件,但open()会?
有没有人知道为什么std :: fstream不会打开文件,而open()会,如果是的话,我如何获得std :: fstream来打开文件?
它很可能与文件共享语义有关。请参阅this thread,它处理类似的问题 - 答案是“文件保护,文件共享,文件权限是OS特有的,这就是为什么它不被标准C++覆盖”的概念。
我不知道是否在某个地方引擎盖下,std::fstream
版本号召open
- 我敢打赌。您是否尝试过检查errno,或者运行strace
以查看系统调用是否返回了错误?
是的,我怀疑我可能必须为它使用open(),read(),write()等编写自己的I/O类。这并不重要,因为我需要对每个块进行缓存,因为它是用于文件系统的。 – 2010-08-05 10:18:49