我没真正用过这个东西,只不过是当时有人在qt-project 的forum 中问到这个问题,我便查了些东西,写了写。仅此而已。
至于你提到的缓冲,这属于另一个问题。 你需要了解,同样是一个printf() ,当它直接输出到控制台,和使用管道或重定向时,效果是不一样的。输出到控制台时,它是行缓冲的,即遇到换行符,就会自动flush,而使用管道或重定向后,就是全缓冲模式了。
对于比较严谨的控制台程序,在需要刷新时,都应该手动调用fflush() 函数 或 std::flush 算子。
另外,你也可以试试手动设置你程序的缓冲模式 setvbuf()