0

私はこれらすべてにかなり慣れていません。これが私の問題です。

「FILE*p = _popen」に従って、VS2010 c ++からgnuolotへのパイプを開いています。これは、最終的にグラフが表示されるため、機能しているようです。

パイプを開いた直後の「スイッチのフリック」と、int _tmain(int argc、_TCHAR * argv []){}構造内の「gnuplot」へのコマンドの送信によって中断される無限ループがあります。

このループは、意図的に無限ループを中断した場合、またはプロセッサ時間をすべて「占有」した場合にのみ表示されるため、gnuplotでのグラフの生成を何らかの形でブロックしているように見えます。

ここでの私の主な最終的な目的は、gnuplotへのパイプを開いてから、c++プログラムからの変数をgnuplotでリアルタイムにプロットすることです。

4

1 に答える 1

0

問題は、stdioがデフォルトでパイプに出力をバッファリングすることです。ソリューションは次のとおりです。

  1. データをパイプに強制する場合に呼び出しfflushます。

  2. fflush各出力操作の後に呼び出します。

  3. パイプを開いた後に呼び出しsetbufて、バッファリングを無効にします。

  4. pcloseパイプへの送信が終了したら呼び出すと、バッファリングされたすべてのデータがフラッシュされます。

于 2012-11-15T08:30:36.477 に答える