私はそれではなく、コマンドが完了するのを待っているの利用可能である限り実行されているシェルコマンドの出力を取得したいのですが。私のコードは、新しいスレッドのJavaのRuntime.exec()非同期出力
Process proc = Runtime.getRuntime().exec("/opt/bin/longRunning");
InputStream in = proc.getInputStream();
int c;
while((c = in.read()) != -1) {
MyStaticClass.stringBuilder.append(c);
}
で実行されてこれに伴う問題は、/ opt/binに/ longRunningで私のプログラムは、入力ストリームが割り当てられ、読まれる前に完了することがあるということです。これを非同期的に行う良い方法はありますか?私の目標は、AJAXリクエストは現在の値MyStaticClass.stringBuilder.toString() 秒ごとに返すことです。
私はFYI、Java 5の上こだわっています。
ありがとうございます! W
おかげですべてを! Apache CommonsのExecは、私が行った方法です。 @Paul Cager、素晴らしいアイデアを提供しました。呼び出されたスクリプトは、実際にパイプされてブロックされていることを検出していました。しかし、あなたがRuntime.execから取得したストリームは同期されているので、それを読み込もうとするとブロックしています。 – wmarbut