我正在编写一个avrdude
帮助程序,它有助于调用一些命令行参数。在控制台中发出avrdude命令时,屏幕上将显示一系列输出结果。无论如何都要抓取输出并在GUI窗口中显示它(使用Qt,如果这很重要)?
我想我可以获取输出并将其重定向到文件(avrdude -args > textFile.txt
),该文件可以在运行时读取并显示在屏幕上,如果没有别的话。
只是想知道是否还有其他选择来捕获此输出。
答案 0 :(得分:3)
我认为关键类是QProcess和QLabel或类似的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);
祝你好运!