1

VC++ を使用してテキスト ファイルを生成し、(fstream 経由で) データを継続的に書き込みます。C++が追加する同じファイルにアクセスする別のapplication2(C++ではない)があります。application2 がファイルにアクセスした瞬間に、C++ プログラムからの新しいデータをファイルに書き込むことはできません。C++ からの新しいデータが一時ファイルに送られるようです。application2 がファイルを閉じると、新しいデータがファイルに更新されます。データをリアルタイムでファイルに書き込み、同時に application2 で読み取る必要があります。application2によって開かれたファイルに新しいデータを表示するには、c++で何をすべきですか?

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 側では、このファイルをどのように開いているのか正確にはわかりません。アプリケーションは Universal Real-Time Software Oscilloscope です。メニューには「ファイルから読み取る」オプションがあります

4

1 に答える 1

0

うーん。仕事には多くのことがあります:

  1. デフォルトでは、fprintf の出力はプライベート RAM バッファにバッファリングされる場合があります。このバッファは、必要に応じて、または fclose を実行したときにのみフラッシュされます。データを強制的に出力したい場合は、setbuf 呼び出しを行う (ドキュメントを読む) か、各 fprintf の後に fflush を明示的に呼び出すことができます。
  2. fopen が同時読み取りを許可するかどうかはわかりません。バッファリング動作を考えると、おそらくそうではありません。読み取り/書き込み共有が必要な場合は、ドキュメントを参照して、これを有効にする明示的なモード パラメーターがあるかどうかを確認する必要があります。
  3. 残念ながら、これはあなたがコントロールできる部分だけをカバーしています。リーダー (あなたが制御していないアプリケーション) が共有読み取りをサポートしていない場合は、うまくいきません。
于 2012-12-12T05:56:25.273 に答える