Я использую Runtime для выполнения команды, которая принимает пароль дважды (например: введите пароль, проверьте пароль). Я использую следующий код. Проблема, с которой я столкнулся, - зависание программ, потому что она ждет подтверждения пароля. 1-й пароль передается должным образом (я верю, удалив подтверждение пароля из моей команды и в java-коде, и он работает), проверьте, что пароль не передается команде, и команда ждет подтверждения пароля на неопределенный срок. Пожалуйста, дайте мне знать, есть ли у кого-нибудь какие-либо санкции.Как передать несколько паролей в java-процесс
try
{
runtime = Runtime.getRuntime();
process = runtime.exec("<<my command>>"");
String inLine = "";
String errLine = "";
StringBuffer inBuffer = new StringBuffer();
StringBuffer errBuffer = new StringBuffer();
PrintWriter pw = new PrintWriter(process.getOutputStream());
pw.print("<<password>>"+"\n");
pw.print("<<verify password>>"+"\n");
pw.flush();
BufferedReader stdin = new BufferedReader(new InputStreamReader(
process.getInputStream()));
BufferedReader stderr = new BufferedReader(new InputStreamReader(
process.getErrorStream()));
while ((inLine = stdin.readLine()) != null) {
inBuffer = inBuffer.append(inLine + "\n");
}
stdin.close();
System.out.println("Output messages of cmd " + inBuffer.toString());
while ((errLine = stderr.readLine()) != null) {
errBuffer = errBuffer.append(errLine + "\n");
}
stderr.close();
System.out.println("Error messages of cmd " + errBuffer.toString());
process.waitFor();
int exitCode = process.exitValue();
System.out.println("cmd " + " exited with code " + exitCode);
}
ли выходное что-нибудь процесс на консоль, прежде чем вы должны написать пароль? – MadProgrammer
Нет, он ничего не выводит на консоль до того, как я напишу пароль –
Итак, если вы запустили программу из командной строки, она вообще не отобразила какое-либо приглашение? – MadProgrammer