public static String GetResultnew(String command) { String result = ""; Process p =null; Runtime rt = Runtime.getRuntime(); try { p = rt.exec("sh"); //获取进程的标准输入流 final InputStream is1 = p.getInputStream(); //获取进城的错误流 final InputStream is2 = p.getErrorStream(); final OutputStream os = p.getOutputStream(); //启动两个线程,一个线程负责读标准输出流,另一个负责读标准错误流 writeLine( os, null, command); //writeLine( os, null, "ps ax"); writeLine( os, null, "exit" ); os.close(); new Thread() { public void run() { BufferedReader br2 = new BufferedReader(new InputStreamReader(is2)); try { String line2 = null ; while ((line2 = br2.readLine()) != null ) { if (line2 != null){ } } } catch (IOException e) { e.printStackTrace(); } finally{ try { is2.close(); } catch (IOException e) { e.printStackTrace(); } } } }.start(); BufferedReader br1 = new BufferedReader(new InputStreamReader(is1)); try { String line1 = null; while ((line1 = br1.readLine()) != null) { if (line1 != null){ result = result + line1; } } } catch (IOException e) { e.printStackTrace(); } finally{ try { is1.close(); } catch (IOException e) { e.printStackTrace(); } } p.waitFor(); p.destroy(); return result; } catch (Exception e) { try{ p.getErrorStream().close(); p.getInputStream().close(); p.getOutputStream().close(); } catch(Exception ee){} } return ""; }
接受同事的项目,服务过两天就出问题,最后确认是调用系统命令的地方有问题。以上是修改后的代码。