发出在程序中使用的命令时如何获取终端输出?

时间:2014-05-24 01:51:49

标签: c++ qt qtgui qtcore avrdude

我正在编写一个avrdude帮助程序,它有助于调用一些命令行参数。在控制台中发出avrdude命令时,屏幕上将显示一系列输出结果。无论如何都要抓取输出并在GUI窗口中显示它(使用Qt,如果这很重要)?

我想我可以获取输出并将其重定向到文件(avrdude -args > textFile.txt),该文件可以在运行时读取并显示在屏幕上,如果没有别的话。

只是想知道是否还有其他选择来捕获此输出。

2 个答案:

答案 0 :(得分:3)

我认为关键类是QProcessQLabel或类似的GUI小部件,如下所示:

QProcess avrDudeProcess;
avrDudeProcess.setProcessChannelMode(QProcess::MergedChannels);
avrDudeProcess.start("avrdude", optionList);
if (!avrDudeProcess.waitForStarted())
    return false;

if (!avrDudeProcess.waitForFinished())
    return false;

QByteArray output = avrDudeProcess.readAll();
myLabel.setText(output);

答案 1 :(得分:2)

也许,这就是你要找的东西。

http://linux.die.net/man/3/popen

这是一个例子:

/* First open the command for reading. */
FILE * file = popen("/bin/ls /etc/", "r");

char output[100];
/* Read the output line by line */
while (fgets(output, 100, file) != NULL) 
{
    printf("%s", output); /* show the result */
}

/* close */
pclose(file);
祝你好运!