Java中无法捕获C程序printf输出的问题

来源:互联网 发布:dv视频剪辑软件 编辑:程序博客网 时间:2024/05/31 06:23

在测试ConsoleRunner的过程中发现一个有意思的现象,一段很简单的C程序:

 

#include <stdio.h>

#include <windows.h>

 

int main() {

   int i = 0;

   for (;;) {

       printf("%d/n", i++);

       Sleep(500);

    }

   return 0;

}

 

ConsoleRunner竟然无法捕获其输出,如果把Sleep拿掉就行,或者如果改用C++cout也行,很奇怪,怀疑是缓冲区的问题,上网查找,果然如此,见“fflush(stdout)的用途是什么(http://bbs.chinaunix.net/viewthread.php?tid=693309)”,程序中加上一行后,问题消失:

 

#include <stdio.h>

#include <windows.h>

 

int main() {

   int i = 0;

   for (;;) {

       printf("%d/n", i++);

        fflush(stdout);

       Sleep(500);

    }

   return 0;

}

 

原创粉丝点击