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 "";
}
接受同事的项目,服务过两天就出问题,最后确认是调用系统命令的地方有问题。以上是修改后的代码。
转载于:https://blog.51cto.com/which/1315085