non penso che questo è possibile, ma ho utilizzato:Input utente alla riga di comando quando si utilizza Runtime.getRuntime(). Exec (comando);
Process p = Runtime.getRuntime().exec(command);
per eseguire comandi sulla linea di comando, ma ora io sono venuto attraversato una situazione in cui il comando Sono in esecuzione in un punto intermedio chiederà qualche input dell'utente, ad esempio un nome utente.
Questo non può essere risolto da un argomento al comando che si sta eseguendo, esiste un modo per passare il nome utente alla stessa istanza della riga di comando e continuare?
--- EDIT ---
ho ancora cant farlo funzionare. Questi sono i passi sulla linea di comando:
C:\someProgram.exe
Login:
Passowrd:
Quindi ho bisogno di passare il login e la password quando viene richiesto in fase di esecuzione. Il codice che ho ottenuto che non funziona:
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");
}
Ive ha provato cose come: writer.write ("myusername \ n");
Qualsiasi aiuto, posso vedere che alcuniProgram.exe viene chiamato e in esecuzione nei processi, ma semplicemente si blocca.
Hai controllato se 'Processo' ha qualche metodo per farlo? –
Sì, ad esempio Process # getOutputStream() :) – hoaz