C ++写入文件的问题

时间:2010-09-28 15:16:53

标签: c++ file writing

我的代码:

std::ofstream m_myfile,

m_myfile.open ("zLog.txt");
m_myfile << "Writing this to a file " << " and this " << endl;

当这个C ++程序运行时,我有另一个需要读取此文件的程序。问题是该文件被C ++锁定,我无法从其他程序中读取它。我知道我必须要做的事情是我在C ++程序中编写代码,它允许共享。有人可以写出我需要的东西。我已经用谷歌搜索了它,但仍然无法使其发挥作用。

有人说在其他程序读取文件之前关闭文件。我不能这样做,文件需要打开。

谢谢

4 个答案:

答案 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?