Этот вопрос похож на этот вопрос. Разница в том, что указанное там решение работает не всегда.
Пример 1
QProcess * process;
process = new QProcess();
process->start("/usr/bin/env");
process->waitForFinished(-1);
QString p_stdout = process->readAllStandardOutput();
qDebug() << p_stdout;
//output
HOME=/home
PATH=/usr/bin:/bin:/usr/sbin:/sbin:/sbin:/usr/sbin
DISPLAY=:0.0
SHELL=/bin/sh
PWD=/home
Все работает, и вывод похож на ввод /usr/sbin/env
в терминале.
Пример 2
QProcess * process;
process = new QProcess();
process->start("/usr/sbin/iptables");
process->waitForFinished(-1);
QString p_stdout = process->readAllStandardOutput();
qDebug() << p_stdout;
//output
""
Тот же код, просто другая команда и никакого вывода. Есть вывод, когда я набираю /usr/sbin/iptables
в терминале
iptables v1.4.16.3: команда не указана Попробуйте `iptables -h' или 'iptables --help' для получения дополнительной информации.
немного он не появляется в p_stdout
. В чем подвох этого решения?
QProcess::readAllStandardError()
? - person vahancho   schedule 07.02.2014process->setProcessChannelMode(QProcess::MergedChannels);
- person TheMeaningfulEngineer   schedule 07.02.2014