我目前正在对其中一个客户端从服务器接收外壳/控制台命令一个项目,必须执行。
如何获取Java来,无论是从壳或命令提示符中运行这些命令? 我希望能够忽略的平台类型 - 并没有指定shell或命令提示符 - 但如果我不能,那也没关系。
我必须能够发送相关命令的序列 ,而不仅仅是一个命令。 这意味着,壳/提示不能退出或命令之间接近。
我的当前代码,如下所示,允许节目的序列的执行,但这些命令必须以某种方式通过管道输送到壳/命令提示,从该输出必须被读取。
ArrayList<String> comDat = new ArrayList<>();
while(true) {
String input = con.recv();
System.out.println("> " + input);
if(!input.equals("EOF")) comDat.add(input); else {
String[] s = new String[comDat.size()];
for(int i = 0; i < comDat.size(); i++) s[i] = comDat.get(i);
System.out.println("---Command sequence executing---");
Process p = Runtime.getRuntime().exec(s);
p.waitFor();
System.out.println("---ErrorStream output---"); String line = "";
BufferedReader errStream = new BufferedReader(new InputStreamReader(p.getErrorStream()));
while((line = errStream.readLine()) != null) System.out.println("< " + line);
System.out.println("\n---OutputStream output---"); line = "";
BufferedReader outStream = new BufferedReader(new InputStreamReader(p.getInputStream()));
while((line = errStream.readLine()) != null) System.out.println("< " + line);
}
Thread.sleep(200);
}
谢谢您的帮助!