0

単純にRスクリプトを実行したい

R --file=x.R

コマンドラインでうまく動作します。しかし、C++でシステムコールを試してみると

QProcess::execute("R --file=x.R");

また

system("R --file=x.R");

プログラムRが実行されて終了しますが、プログラムが生成するはずの出力が表示されません。プログラムがstdout(Rなど)を使用しない場合、システムコール後に出力ファイルとして、またはプログラム自体のコンソールで出力をフェッチするにはどうすればよいですか?

御時間ありがとうございます。

4

1 に答える 1

1

QProcess実行したコマンドの出力をキャプチャできます。使用した静的関数呼び出しではありません。代わりに、次のようにしてみてください。

QProcess process;
process.start( "R --file=x.R" );
process.waitForFinished();
QByteArray output = process.readAllStandardOutput();
QByteArray error = process.readAllStandardError();

もちろん、適切に処理を行うために、プロセスを開始してから、プロセス オブジェクトの終了シグナルに接続されたスロットで残りのコードを実行することもできます。必要に応じて、標準出力またはエラーからインクリメンタルに読み取ることもできます。または、オブジェクトへの入力として出力またはエラーを受け取るようにオブジェクトを設定できます。

于 2010-03-12T15:47:24.893 に答える