Как получить вывод при вызове R с использованием Qprocess или system - PullRequest
0 голосов
/ 12 марта 2010

Я хотел бы выполнить скрипт R просто как

R --file=x.R

Хорошо работает в командной строке. Однако, когда я пытаюсь системный вызов в C ++

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

или

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

программа R запускается и закрывается, но я не вижу вывод, который должна сгенерировать программа. Если программа не использует стандартный вывод (например, R), как мне получить выходные данные после системного вызова в виде выходного файла или в собственной консоли программы?

Спасибо за ваше время.

1 Ответ

1 голос
/ 12 марта 2010

QProcess позволяет вам захватить вывод команды, которую вы выполняете; но не через статический вызов функции, который вы использовали. Вместо этого попробуйте что-то вроде этого:

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

Конечно, чтобы сделать все правильно, вы можете запустить процесс, а затем выполнить оставшуюся часть кода в слоте, подключенном к сигналу завершения объекта процесса. Вы также можете читать из стандартного вывода или ошибки постепенно, если вы этого хотите. Или вы можете установить объекты для получения вывода или ошибки в качестве ввода для этих объектов.

...