いくつかのデータを出力する C++ プログラム (feeder.exe) があります。
printf("%s\n", line);
平均して 1 秒あたり 20 ~ 30 行を生成しますが、均一ではありません。
Javaコードからexeを実行して、Javaプログラムでこのデータをキャッチしたい:
package temp_read;
import java.io.*;
public class Main {
public static void main(String[] args) throws Throwable {
Process p = Runtime.getRuntime().exec("d:/feeder.exe");
InputStream is = p.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
String line = null;
while ((line = in.readLine()) != null) {
System.out.println(System.currentTimeMillis() + "," + line);
}
}
}
しかし、出力を調べると、3 ~ 5 秒に 1 回、大量の文字列を受け取っていることがわかります。
質問: feeder.exe から stdout に出力するときに遅延なくすぐにデータを受け取るにはどうすればよいですか?
PS: 関係ない質問: Ctrl+C で Java を停止した場合、feeder.exe を停止するにはどうすればよいですか?