に行った後に実行された私のコードの一部です:STDシステムは、ここで次の行のC++
void Espresso::run()
{
std::system("/home/espresso-ab-1.0/src/espresso espresso.in > espresso.out");
std::string line;
std::ifstream myfile ("espresso.out");
if (myfile.is_open())
{
while (getline (myfile,line))
{
std::cout << line << '\n';
}
myfile.close();
}
}
上記のコードは最初のシステムコマンドを実行して、完全に「espresso.out」ファイルを記入してから行く場合、私は疑問に思ってそれを次の行に読んでください。 もしそうでなければ、ファイルを読む前に完全に印刷されていることを確認する方法を教えてください。
注:私はC++ 03を使用するように制限されています。
すぐにお返事ありがとうございます。私の質問を更新したい: - スレッドセーフな方法ですか?
'std :: system'はコマンドが終了するまでブロックします。そうすれば' espresso.out'ファイルはあなたがそれを開こうとする時までに「準備完了」になります。 – szczurcio
['popen'](http://pubs.opengroup.org/onlinepubs/9699919799/functions/popen.html)を使用して、代わりにコマンドの出力を直接読むことができます。しかし、あなたはC 'FILE *' "ストリーム"を使う必要があります。 –
@szczurcio:質問に答えるには_commentsセクション_ではなく_answerセクション_を使用してください。 –