我的代码:
std::ofstream m_myfile,
m_myfile.open ("zLog.txt");
m_myfile << "Writing this to a file " << " and this " << endl;
当这个C ++程序运行时,我有另一个需要读取此文件的程序。问题是该文件被C ++锁定,我无法从其他程序中读取它。我知道我必须要做的事情是我在C ++程序中编写代码,它允许共享。有人可以写出我需要的东西。我已经用谷歌搜索了它,但仍然无法使其发挥作用。
有人说在其他程序读取文件之前关闭文件。我不能这样做,文件需要打开。
谢谢
答案 0 :(得分:1)
您需要在启用共享的情况下打开文件。使用open
方法的以下重载:
void open(const char *szName, int nMode = ios::out, int nProt = filebuf::openprot);
并将相应的共享模式传递为nProt
:
filebuf::sh_compat
:兼容性共享模式filebuf::sh_none
:独家模式;不分享filebuf::sh_read
:允许阅读分享filebuf::sh_write
:允许写共享 ofstream
构造函数也有一个带有相同参数的重载。
答案 1 :(得分:0)
共享将在操作系统级别进行控制。因此,您需要查看适用于您的操作系统的API,并找出如何打开读写共享。
注意:您可能仍然无法获得所需的结果,因为会出现缓存和缓冲问题,您认为写入文件的内容可能实际上并不存在。
如果要在两个进程之间共享信息,请使用命名管道或套接字。几乎每个操作系统都可以使用它们。
答案 2 :(得分:0)
打开文件时使用filebuf::sh_write
。
答案 3 :(得分:0)
其他选项是使用套接字。查看此stackoverflow问题:Is there a way for multiple processes to share a listening socket?