我有一个 exe 程序放在共享位置。开始时不需要任何参数。当它在命令窗口中启动时,它会显示一个帮助菜单,其中包含可以使用它执行的命令列表,并以>
期望输入命令结束。我需要执行TRIGGER
从该列表调用的一个特定命令。到目前为止,这就是我所拥有的,但它完全失败了。它既不显示进程的输出,也不trigger
从流中获取输入命令。
public void execute(){
String cmd = "\\\\sharedLocation\\server\\adm.exe";
p = Runtime.getRuntime().exec(cmd);
InputStream in = p.getInputStream();
OutputStream out = p.getOutputStream();
BufferedReader br= new BufferedReader(new InputStreamReader(in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out));
bw.write("TRIGGER");
bw.flush();
String output = "";
while (!output.endsWith(">")) {
System.out.println("in loop");
output = output + br.readLine();
}
System.out.println("Out"+output);
out.close();
p.waitFor();
}
编辑:adm.exe 由该程序启动,但似乎 adm.exe 是一个阻塞进程。它无法打印“in loop”语句。但是,当我打开 Windows 任务管理器并杀死 adm.exe 进程树时,这会显示在控制台上
in loopnull
in loopnullnull
in loopnullnullnull
in loopnullnullnullnull
in loopnullnullnullnullnull
in loopnullnullnullnullnullnull
in loopnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
in loopnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
Outnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull