• 4991阅读
  • 6回复

[提问]如何实时截获进程输出 [复制链接]

上一主题 下一主题
离线hunxn
 

只看楼主 倒序阅读 楼主  发表于: 2014-04-10
— 本帖被 kimtaikee 从 Qt 作品展 移动到本区(2014-04-10) —
如何实时截获另一进程中控制台程序的标准输出?
离线kimtaikee

只看该作者 1楼 发表于: 2014-04-10
查看QProcess, 有readStandardOutput 和 readStandardError等接口。

离线hunxn

只看该作者 2楼 发表于: 2014-04-10
回 kimtaikee 的帖子
kimtaikee:查看QProcess, 有readStandardOutput 和 readStandardError等接口。 (2014-04-10 15:15) 

谢谢你!我是说实时获取而不是一次性读取
离线退避九舍

只看该作者 3楼 发表于: 2014-04-10
用信号-槽,就是实时的啊。。。
离线kimtaikee

只看该作者 4楼 发表于: 2014-04-10
回 hunxn 的帖子
hunxn:谢谢你!我是说实时获取而不是一次性读取 (2014-04-10 17:28) 

如楼上所说,QProcess不是有readyReadStandardXXX信号吗,你连接个槽函数不就可以实时读取输出了吗?

离线圣域天子

只看该作者 5楼 发表于: 2014-04-11
早年用的管道方式,可以实时读取
离线dbzhang800

只看该作者 6楼 发表于: 2014-04-11
回 kimtaikee 的帖子
kimtaikee:如楼上所说,QProcess不是有readyReadStandardXXX信号吗,你连接个槽函数不就可以实时读取输出了吗? (2014-04-10 22:41) 

怕就怕他要调用的那个程序自身没有及时flush

不使用重定向时,输出到终端或控制台时,默认是行缓冲的,看似一切正常。
而重定向后,由于程序内没有设置行缓冲,也没有及时flush,程序的输出本身就不是实时的。QProcess对此也就无能为力了。
快速回复
限100 字节
 
上一个 下一个