コンソールでTest.exeからのメッセージを出力するアプリケーションが1つあります.My javaプログラムはこのTest.exeを実行して1つのプロセスを作成します。 このアプリケーションは、そのプロセスのinput-streamからメッセージを読み取って出力します。私はTEST.EXEをダブルクリックすると
1)、メッセージ(:私は直面していますことをJavaプログラムの.exe printf()メッセージを出力するには
問題、
私は2つのシナリオを持っている「印刷:%dは」)毎秒のために印刷されています。
2)しかし、Javaアプリケーションを実行すると、Test.exeを終了する前に、メッセージが最後に(1秒ごとではなく)印刷されています。
.exeに非常に膨大なメッセージが印刷されている場合は、それらのメッセージが印刷されます(バッファがいっぱいになると思っています)、フラッシングが行われます。
しかし、どのようにして1番目のケースと同じメッセージを印刷できますか。
誰もが助けていただければ幸いです。 :)
このTest.exeのコードは次のとおりです。
#include <stdio.h>
#include <windows.h>
void main(void)
{
int i=0;
while (1)
{
Sleep(500);
printf("\nPrinting : %d",i);
i++;
if (i==10)
//if(i==100)
{
return 0;
}
}
}
そして、私のJavaアプリケーションは以下の通りです:
public class MainClass {
public static void main(String[] args) {
String str = "G:\\Charan\\Test\\Debug\\Test.exe";
try {
Process testProcess = Runtime.getRuntime().exec(str);
InputStream inputStream = new BufferedInputStream(
testProcess.getInputStream());
int read = 0;
byte[] bytes = new byte[1000];
String text;
while (read >= 0) {
if (inputStream.available() > 0) {
read = inputStream.read(bytes);
if (read > 0) {
text = new String(bytes, 0, read);
System.out.println(text);
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
は、Javaが読むべきと.exeためにその文字列を渡す(またはtestProcess)逆order.IfのI入力で可能コンソールからいくつかのテキスト、それをです.exe.exeは、Javaプログラムから何かをスキャンします。
誰も私を助けてもらえ..
それぞれのprintfの後に 'fflush(stdout)'を追加してみてください –