流程构建器不接受通过getOutputStream输入
问题描述:
我想使用流程构建器运行Windows命令。我不确定它为什么会退出1,因为我觉得我给了正确的输入。如果任何人都能看到它并指导我可能会出错的地方,那将是非常棒的。流程构建器不接受通过getOutputStream输入
try{
ProcessBuilder pb = new ProcessBuilder("runas","/noprofile","/user:alex", "cmd");
Process p = pb.start();
OutputStream os = p.getOutputStream();
PrintStream ps = new PrintStream(os);
ps.println("password");
ps.flush();
System.out.println(p.waitFor());
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String resultLine = in.readLine();
while (resultLine != null) {
System.out.println(resultLine);
resultLine = in.readLine();
}
}
catch (IOException e) {
e.printStackTrace();
}
输出:
亚历输入密码:
答
使用该工具来获取错误
System.out.println(p.waitFor());
BufferedReader in = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String resultLine = in.readLine();
while (resultLine != null) {
resultLine = in.readLine();
System.out.println(resultLine);
}
+0
我没有得到任何东西,如果它运行它。我刚刚得到1为p.waitfor() –
检查错误流的错误输出 – Binu
要轻松获取错误流,使用'pb.redirectErrorStream(true)'将其重定向到stdout。但[它可能根本不可能](https://stackoverflow.com/q/25664203/6730571)...也许'runas'不接受标准输入密码 –
我也试过这个。没有运气。不知道为什么它返回1作为退出代码。 –