私はこれが可能であると思ういけないが、私が使用している:コマンドラインでコマンドを実行するRuntime.getRuntime()を使用している場合のコマンドラインへのユーザー入力。exec(コマンド);
Process p = Runtime.getRuntime().exec(command);
を、今私は私がの途中を実行しているコマンドが要求されます状況accrossに来ていますいくつかのユーザ入力、例えばユーザ名。
これはexecであるコマンドの引数では解決できません。ユーザー名を同じコマンドラインインスタンスに渡して続行する方法はありますか?
---編集---
私はまだこれを動作させることはできません。これらはコマンドラインの手順です。
C:\someProgram.exe
Login:
Passowrd:
したがって、実行時にプロンプトが表示されたら、ログインとパスワードを渡す必要があります。
try {
String CMD = "\"C:\\someProgram\"";
Scanner scan = new Scanner(System.in);
ProcessBuilder builder = new ProcessBuilder(CMD);
builder.redirectErrorStream(true);
Process process = builder.start();
InputStream is = process.getInputStream();
BufferedReader reader = new BufferedReader (new InputStreamReader(is));
OutputStream out = process.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out));
String line;
try {
while (scan.hasNext()) {
String input = scan.nextLine();
if (input.toLowerCase().startsWith("login")) {
writer.write("myUsername");
} else if(input.toLowerCase().startsWith("password")){
writer.write("myPassword");
}
writer.flush();
line = reader.readLine();
while (line != null) {
System.out.println ("Stdout: " + line);
line = reader.readLine();
}
if (line == null) {
break;
}
}
process.waitFor();
}
finally {;
writer.close();
reader.close();
}
}
catch (Exception err) {
System.err.println("some message");
}
アイブのようなもの試した:私はそれdoesntの仕事持っているコード writer.write( "MYUSERNAME \ nを");
私はsomeProgram.exeが呼び出され、プロセスで実行されていることがわかりますが、ハングするだけです。
「プロセス」にこれを行う方法があるかどうかを確認しましたか? –
ええ、例えばProcess#getOutputStream():) – hoaz