如何连续用C ++编写文本文件,同时用其他程序(不是c ++)连续读取同一文本文件?

时间:2012-11-02 16:23:25

标签: c++ visual-studio file real-time

我正在使用VC ++生成文本文件并连续写入(通过fstream)数据。我有另一个application2(NOT C ++)访问c ++附加的同一个文件。当应用程序2访问该文件时,无法将来自C ++程序的新数据写入其中。似乎来自c ++的新数据转到了一些临时文件。当application2关闭文件时,新数据会更新到文件。我希望数据实时写入文件,并由application2同时读取。我应该在c ++中做些什么来使新数据出现在application2打开的文件中?

C ++方面:

int realTimeValues  // this variable is updated continuously

FILE * pFileTXT; 

while(1)
{
 pFileTXT = fopen ("realTimeData.txt","a"); // Opening file in append mode
 fprintf (pFileTXT, "%d\n",realTimeValues);   // saving values to file
 fclose (pFileTXT)                            // Closing the file
}

在application2方面,我无法分辨它是如何打开这个文件的。该应用程序是通用实时软件示波器。在菜单中有一个选项“从文件中读取”

1 个答案:

答案 0 :(得分:0)

唉。有很多事情在发挥作用:

  1. 默认情况下,fprintf输出可以缓冲在私有RAM缓冲区中。仅在需要或fclose时刷新此缓冲区。如果你想强制数据输出,你可以进行setbuf调用(阅读文档)或在每个fprintf之后显式调用fflush。
  2. 我不知道fopen是否允许同时读者。可能不是,考虑到缓冲行为。如果您想要读/写共享,您应该查看文档以查看是否有显式模式参数来启用它。
  3. 不幸的是,这只涵盖了您可以控制的部分。如果读者(你不能控制的应用程序)不支持共享阅读,那么你就不幸了。