我需要通过Qt向终端输入来执行终端命令。我也想阅读输出。我找到了一个适用于Windows的解决方案(QProcess problems, output of process)。这是代码:
#include <QtCore/QCoreApplication>
#include <QTextStream>
#include <QByteArray>
#include <QString>
#include <QProcess>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QTextStream qout(stdout);
QByteArray result;
QProcess cmd2;
cmd2.setReadChannel(QProcess::StandardOutput);
cmd2.setProcessChannelMode(QProcess::MergedChannels);
cmd2.start("cmd");
if (!cmd2.waitForStarted()){
qout << "Error: Could not start!" << endl;
return 0;
}
cmd2.write("ipconfig\n");
cmd2.closeWriteChannel(); //done Writing
while(cmd2.state()!=QProcess::NotRunning){
cmd2.waitForReadyRead();
result = cmd2.readAll();
qout << result;
}
qout << endl << "---end----" << endl;
return a.exec();
}
在ubuntu中,我将“cmd”更改为“xterm”,将“ipconfig”更改为“ifconfig”,但它无效!
答案 0 :(得分:0)
好的,我找到了解决方案。使用bash而不是xterm。我真的不确定为什么会这样。我的猜测是,当我使用xterm时,它打开了一个单独的窗口,并且xterm进程与thr主进程分离。但是在bash中,它在与qt控制台应用程序相同的终端中执行所有操作。