使用C实时写入文件

时间:2013-10-20 20:24:28

标签: c real-time fopen printf

如何实时将数据写入文件? 我的意思是:程序获取数据并使用fprintf(...)命令将它们放入文件(我们可以说 out.txt ),然后另一个程序从文件中读取数据( out .txt )并详细阐述它们。

我有这样的流程:

fp=fopen("out.txt","w+");

    while(...) {

    ...

    fprintf (fp,"\n %s", data);

}

fclose(fp);

通过该流程,我在关闭文件后将数据存入文件( out.txt )。

有没有办法将数据实时写入文件?

1 个答案:

答案 0 :(得分:1)

当您实时说 时,我怀疑您的意思同时。同时访问 到文件需要打开共享文件。这可能是管道或其他一些进程间 通讯。根据要求,它也可能是磁盘上的简单文件。 Windows允许打开 通过_fsopen

的共享文件
#include <share.h> // required for manifest constants for shflag parameter.

fp = _fsopen("out.txt","w+",_SH_DENYWR); // e.g. _SH_DENYWR denies write access
   .
while(...) {
   .
   .

另一个进程可以在文件打开时读取该文件;无需事先关闭文件。其他进程甚至可以写(使用shflag = _SH_DENYNO)。但是,从不同进程同时进行写入和读取需要更多的编码工作。

   .
  fprintf (fp,"%s\n", data); // you may want to have the /n "new line" after writing the data
   .

并非所有书面内容都始终被无条件地写入文件(物理上)。因此,需要强制在fprintf之后将内容写入文件。

   .
  fflush(fp); // force writing to device    
   .
}