首页 文章

使用Qt写入终端

提问于
浏览 1533
-1

我需要通过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”,但它不起作用!

1 回答

  • 0

    好的,我找到了解决方案 . 使用bash而不是xterm . 我真的不确定为什么会这样 . 我的猜测是,当我使用xterm时,它打开了一个单独的窗口,并且xterm进程与thr主进程分离 . 但在bash中,它在与qt控制台应用程序相同的终端中执行所有操作 .

相关问题