1
私はいくつかのコマンドを持つ1つのシェルスクリプトを持っていますが、そのうちの1つは実行時にいくつかのデータを入力する予定です。 exec()メソッドを使ってこのシェルスクリプトを実行しています。現在、入力を求められたら手動でデータを入力しています。コンソールはのデータが入力されることを期待するときは、次の私が何をしたいのかJavaプログラムで実行時にコンソールからデータを書き込み、読み取る
Process p = Runtime.getRuntime().exec("myshellscript");
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
// read the output from the command
System.out.println("Here is the standard output of the command:\n");
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
// read any errors from the attempted command
System.out.println("Here is the standard error of the command (if any):\n");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
System.exit(0);
、私のコードですが、それはJavaプログラムによって入力されたし、ちょうど私の更なるJavaプログラムを継続する必要があります。
あなたはjavaに新しいコードを書いてください。私はマルチスレッドでは一度も働いていません。 –
ここに行きます.... –
ProcessBuilderを使用していた場合は、redirectErrorStream(true)を実行でき、スレッドが1つだけ必要であることに注意してください。 –