QT QProcess输出cout [重复]
Posted
技术标签:
【中文标题】QT QProcess输出cout [重复]【英文标题】:QT QProcess output cout [duplicate] 【发布时间】:2014-06-20 09:57:42 【问题描述】:我正在尝试运行此命令并将输出存储在 QString 中并使用 cout 显示它,但是它不起作用...
QString str_command1;
str_command1 = "netstat -i";
proc1 = new QProcess();
proc1->start(str_command1);
QString tx;
tx = proc1->readAllStandardOutput();
std::cout << tx.toStdString() << std::endl;
【问题讨论】:
没有看到关于 SO 的原始帖子。不要在否决按钮上发疯。 @UmNyobe:人们需要意识到不要回答常见问题,而只是投票关闭它们或标记它。否则,人们会回答琐碎的问题,并且多次回答声誉问题,或者如果不是为了代表,他们至少不知道重复处理系统。金徽章持有者可以尽快关闭它,但遗憾的是,我们在 qt 标签中没有任何标签;-) 好吧,让我得到我的 qt 金徽章 ;) 如果由我决定,我会给你一个。 :) 【参考方案1】:您应该阅读标准输出,直到进程有效终止。尝试类似:
if (proc1.waitForStarted(-1))
while(proc1.waitForReadyRead(-1))
tx += proc1.readAllStandardOutput();
【讨论】:
有信号readyReadStandardOutput()
为什么要忙等待
@UmNyobe:它是重复的,但我也更喜欢显示简单的示例,而忙碌的等待更容易说明问题:不等待过程完成。如果进程由于某种原因挂起,则没有超时是一个问题。
如果你在同一个函数下生成和检查输出,你如何捕捉信号?
@LeonardoBernardini:了解更多关于 Qt 信号和槽的信息,尤其是 lambdas。
只要你在堆上有一个对象,你就可以使用 lambdas 和信号,如果你想把它放在堆栈上,并且按照用户的要求在同一个块中做所有事情,我真的无法找到方法处理你的提议,除非你强制一个事件循环......如果有这样的方式,请告诉我光!以上是关于QT QProcess输出cout [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在 Qt 中获取输出:'QProcess::start()' 和 'QProcess:readAllStandardOutPut()'