67,513
社区成员
发帖
与我相关
我的任务
分享
public static void execShell(String cmd) throws IOException {
int status = -1;
Runtime rt = Runtime.getRuntime();
String str[] = { "/bin/sh", "-c", cmd };
Process pcs = rt.exec(str);
BufferedReader br = new BufferedReader(new InputStreamReader(
pcs.getInputStream()));
InputStream stdout=pcs.getInputStream();
InputStream sterr=pcs.getErrorStream();
OutputStream stdin=pcs.getOutputStream();
String line = new String();
StringBuilder sb = new StringBuilder(" ");
BufferedReader reader = new BufferedReader(new InputStreamReader(sterr, "UTF-8"));
while ((line = reader.readLine()) != null) {
sb.append(line).append("\n");
}
logger.error("sterr="+sb.toString());
while ((line = br.readLine()) != null) {
System.out.println(line);
}
try {
status = pcs.waitFor();
} catch (InterruptedException e) {
System.err.println("processes was interrupted");
logger.info(e.toString());
} catch(Exception ex){
logger.info(ex.toString());
}finally {
br.close();
logger.info("----"+cmd+" end "+status +" sterr "+sterr +" stdout "+stdout +" stdin "+stdin);
IOUtils.closeQuietly(stdout);
IOUtils.closeQuietly(sterr);
IOUtils.closeQuietly(stdin);
}
int ret = pcs.exitValue();
System.out.println(ret);
}