私はJavaでプロセスを実行します。プロセスは決してファイルを探してマシンをスキャンしてスキャンしません。私は一定の時間プロセスを実行し、出力を取得したい。この問題は、スクリプトが短時間に結果が見つからない場合はループ2が終了し、期間中に再び実行されないということです私のコードwhileループで2つの条件を満たす
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
Process p = pb.start();
while ((System.currentTimeMillis() <= endTime)){ //loop 1
while((line=stdInput.readLine()) != null){ loop 2
System.out.println(line);
}
}
p.destroy();
の作品です。
stdInput.readLine()
はまだ時間が終了した場合でも、ループは終了しません結果を返す場合、私はまた
while ((System.currentTimeMillis() <= endTime) || (line=stdInput.readLine()) != null))
しかし、この場合は試してみました。この場合
while ((System.currentTimeMillis() <= endTime) && (line=stdInput.readLine()) != null))
line=stdInput.readLine()
は時間が終了していない場合であっても、結果が返されない場合は、ループが終了します
:私はこのコードを試してみました
System.out.println("Before while");
while ((System.currentTimeMillis() <= endTime){
System.out.println("while");
if(line=stdInput.readLine())!= null){
System.out.println("One line");
}
}
p.destroy();
の場合ループの終了が検出されない場合は、これが出力です
ok前に の間に
System.out.println( "while");それが5秒間呼ばれることになっていたときにちょうど1回だけ呼ばれた。
、それは正常に見えるが、それは働いていないおかげで、私はより詳細 –