【发布时间】:2011-04-20 15:16:42
【问题描述】:
我以为我会使用以下代码从 QProcess 获取输出:
// Start the process
process.start(tr("php-cgi www/test.php"),QIODevice::ReadWrite);
// Wait for it to start
if(!process.waitForStarted())
return 0;
// Continue reading the data until EOF reached
QByteArray data;
while(process.waitForReadyRead())
data.append(process.readAll());
// Output the data
qDebug(data.data());
qDebug("Done!");
我期望看到程序的输出打印到调试控制台,但我看到的只是:
完成!
我知道:
- 程序启动正常,因为打印了最后的消息。
- 程序会打印输出,因为在终端中运行完全相同的命令会产生预期的一长串文本。
我在这里做错了什么?
【问题讨论】:
-
看看这个类似问题的公认答案:stackoverflow.com/questions/2148185/…
-
这个问题的解决方案也有道理,但它不保持消息的顺序
-
用语言翻译宏 tr() 封装可执行文件是没有意义的。我也怀疑将可执行文件和参数作为第一个参数是否可行。更好: process.start("php-cgi", QStringList()
-
如果您不想在 QProcess 运行时阻止您的应用程序,请查看此问题的答案:stackoverflow.com/questions/10098980/…
-
QProcess 不错。 Qt 非常漂亮!
标签: qt process stdout qprocess