Стандартное перенаправление Qt 5 и QProcess с сигналом / слотом readyRead
Эта проблема беспокоит меня, потому что она должна работать, но, к сожалению, это не так. То, чего я пытаюсь добиться, - это прочитать стандартный вывод определенного процесса и заставить другой процесс обработать его, то есть распечатать его.
Процесс, который производит вывод, выглядит так:
#include
#include
#include
int main() {
for (int i = 0; i < 100; i++) {
printf("yes %d\n",i);
fflush(stdout);
sleep(1);
}
return 0;
}
Процесс запускается в другом приложении, например:
#include
...
QProcess * process = new QProcess;
SomeClass * someClass = new SomeClass(process);
connect(process,SIGNAL(readyRead()),someClass,SLOT(onReadyRead()));
process->start("../Test/Test",QStringList());
if (!process->waitForStarted(4000)) {
qDebug() < "Process did not start.";
}
...
void SomeClass::onReadyRead() {
qDebug() < "Reading:" < process->readAllStdOutput();
}