我想编写一个例程,它会自动更改我的机器学习参数并多次执行(机器学习)代码并将其结果保存到文本文件中。
机器学习代码从Ubuntu终端运行,其结果也写入Ubuntu终端。
我需要一种从C ++代码读取数据并将数据写入Ubuntu终端的方法。
到目前为止我发现的是QProcess:
QProcess process;
process.start("gnome-terminal"); //THE TERMINAL IS OPENED INDEED
char w[] = "write";
process.write(w,sizeof(w));
process.waitForFinished();
但没有任何内容可以写入或从中读取
工作是什么:
QProcess process1;
QProcess process2;
process1.setStandardOutputProcess(&process2);
process1.start("echo 0534230313");
process2.start("sudo -S poweroff");
process2.setProcessChannelMode(QProcess::ForwardedChannels);
这也有效:
int result = system("echo 0534230313 | sudo -S poweroff"); ///COMMANDS TO TERMINAL
int result2 = system("gnome-terminal"); ///OPEN TERMINAL
但问题是我无法读取输出结果(我的机器学习程序可以自己打开并写入终端)
答案 0 :(得分:0)
使用finished信号读取过程输出结果
connect( poProcess, static_cast<void (QProcess::*)(int,QProcess::ExitStatus)>(&QProcess::finished),
[=](int,QProcess::ExitStatus)
{
QByteArray oProcessOutput=
poProcess->readAllStandardOutput();
// Parse the process output.
//
// Mark process for deletion.
emit poProcess->deleteLater();
});