私は初心者で、物理計算用のプログラムを書こうとしています。
現在、子プログラムによって生成される出力は別のテキスト ファイルに送信され、親プログラムは後でこのファイルを開き、そこから値を読み取ります。出力を保存する必要はなく、値のみが重要です。この目的のためにバッファを使用する方が洗練されているため、プロセスで余分なテキスト ファイルが生成されることはありません。
私の質問は、出力をファイル (以下の micromegas.out) の代わりにバッファに送信し、後で以下のコードで出力ファイルに対して行うのと同じ方法でバッファ内の値を検索する方法です。
string micromegas = "./micromegas_3.2/MSSM/main " + p[0] + " " + p[1] + " " + p[2] + " " + p[3] + " " + p[4] + " > micromegas.out";
// Execute child program and send output to micromegas.out
system(micromegas.c_str());
FILE *fout = fopen("micromegas.out", "r"); // open the output file and search for the value (Omega)
char * buffer =(char *)malloc(512);
long double Xf, calc_omega_hsq;
while(fgets(buffer, 512, fout))
{
if (sscanf(buffer, "Xf=%Lf Omega=%Lf", &Xf, &calc_omega_hsq)) {}
}
fclose (fout);
現在ファイル「micromegas.out」に保存されている出力「====レリック密度の計算===== Xf=2.22e+01 Omega=1.34e+00」