Java中无法捕获C程序printf输出的问题
在测试
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;
}
相关文档:
学习Java必看 - JAVA代码编写的30条建议
(1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如:
ThisIsAClassName
thisIsMethodOrFieldName
若在定义中出现了常数初始化 ......
一、引子
话说十年前,有一个爆发户,他家有三辆汽车(Benz(奔驰)、Bmw(宝马)、Audi(奥迪)看来这人比较爱国,没有日本车),还雇了司机为他开车。不过,爆发户坐车时总是这样:上Benz车后跟司机说"开奔驰车!",坐上Bmw后他说"开宝马车!",坐上Audi后他说"开奥迪车!"。你一定说:这人有病!直接说开车不就行了?! ......
Java遍历文件夹的2种方法:
A.不使用递归:
import java.io.File;
import java.util.LinkedList;
public class FileSystem {
public static void main(String[] args) {
long a = System.currentTimeMillis();
LinkedList list = new LinkedList();
File dir = new File("c:\\java\\ ......
今天在研究项目中的设计思想的时候,得出一个对接口和抽象类非常形象的一个比喻。
他们都在“建筑”中得以应用,接口就像大楼的图纸,抽象类就是大楼的架构,楼层就是真正的类。
图纸只是规划出大楼的样子,规定了要做成设计样式才能真正打到诸多效果,但是并不规定要如何盖,对楼层的设计也不考虑,有了图纸, ......