从QT C 控制Ubuntu终端

Control ubuntu terminal from Qt C++

本文关键字:Ubuntu 终端 控制 QT      更新时间:2023-10-16

我想编写一个例程,该例程会自动更改我的机器学习参数并多次执行(机器学习(代码并将其结果保存到文本文件中。

机器学习代码是从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

但是问题是我无法读取输出结果(我的机器学习程序可以打开并单独写入终端(

使用完成的信号读取过程输出结果

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();
});