在变量中获取Qprocess的输出?

时间:2014-02-07 12:44:39

标签: qt stdout qprocess

此问题与this one类似。 不同之处在于,那里指定的解决方案并不总是有效。

示例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中。 这个解决方案的优势是什么?

0 个答案:

没有答案