• 7082阅读
  • 3回复

大牛们,帮忙呀。。。QProcess从StdOut读取数据的问题 [复制链接]

上一主题 下一主题
离线xiang612
 
只看楼主 倒序阅读 楼主  发表于: 2009-12-10
问题如下:
我现在想实现的是,QProcess调用一个可执行的小程序,让小程序执行过程中往StdOut中输出内容
然后用一个窗口部件,得到StdOut的内容,即小程序打印一行,窗口输出一行,就是这个意思。
也就是:
希望每次能够接受到readyReadStdOut的信号,并读取了一行,然后再给窗口部件显示;

可是现在

例如用:
......

fprintf(stdout,"The value is here!");
fprintf(stdout,"The value is here!");
......
一下子就显示。。。



可是用如下的写法,也就是让它显示和终端一样,一行后一会儿再显示另一行。。。
......

fprintf(stdout,"The value is here!");
sleep(1);
fprintf(stdout,"The value is here!");
.......
它是等到了小程序结束了,然后一下子显示出两行。。。
很郁闷,是不是需要同步呀,我用QThread来启动的进程。然后用信号读取stdout,再传个给窗口。。。
从程序上看每次读取了一行,可是为什么到最后一起显示出来。。。郁闷,是我sleep不能用?

我的理解我的程序是等到了外部小程序执行结束了,控件和qDebug()才有的反应!


怎么像终端一样,一行一行的显示呀。。。摆脱各位大牛们了!!!

离线XChinux

只看该作者 1楼 发表于: 2009-12-11
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线rqzrqh

只看该作者 2楼 发表于: 2009-12-11
加\n,printf函数输出到一个缓冲区,检测到\n的时候再显示,这个问题在fork的时候会遇到。
离线xiang612
只看该作者 3楼 发表于: 2009-12-11
谢谢各位,版主光临甚是感动呀!!!
快速回复
限100 字节
 
上一个 下一个