0

我想简单地执行一个 R 脚本

R --file=x.R

它在命令行上运行良好。但是,当我尝试 C++ 中的系统调用时

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

或者

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

程序 R 运行并退出,但我看不到程序应该生成的输出。如果程序不使用标准输出(例如 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 回答