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()'

Qt QProcess

从 Qt 应用程序设置 Linux 主卷

QT软件开发: QProcess启动进程完成交互并获取输出

从 QThread 启动 QProcess [重复]

使用包含空格的参数调用 Qpr​​ocess - Windows