Как получить вывод терминала при выдаче команд для использования в программе?

Я пишу avrdude вспомогательная программа, которая облегчает вызов нескольких аргументов командной строки. При вводе команд avrdude в консоли серия выводимых результатов будет отображаться на экране. Есть ли какой-нибудь способ получить этот вывод и отобразить его в окне графического интерфейса (используя Qt, если это имеет значение)?

Я подумал, что могу взять вывод и перенаправить его в файл (avrdude -args > textFile.txt) который может быть прочитан и отображен на экране во время выполнения, если ничего больше.

Просто интересно, есть ли какие-нибудь другие альтернативы для получения этого результата.

2

Решение

Я думаю, что ключевые классы 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);
3

Другие решения

Может быть, это то, что вы ищете.

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

Удачи!

2