Java中ProcessBuilder使用

List<String> commands=new ArrayList();
cmds.add("sh");
cmds.add("-c");
cmds.add("ps -ef | grep -v grep");
ProcessBuilder=new ProcessBuilder(commands);
//...其它参数添加
processBuilder.command(commands);
processBuilder.directory(path);//切换工作目录
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();
StringBuilder result = new StringBuilder();
final BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
try {
       String line;
       while ((line = reader.readLine()) != null) {
           result.append(line);
           LOGGER.info(processBuilder.command().toString() + " --->: " + line);
       }
} catch (IOException e) {
       LOGGER.warn("failed to read output from process", e);
} finally {
       IOUtils.closeQuietly(reader);
}
process.waitFor();
int exit = process.exitValue();
if (exit != 0) {
    throw new IOException("failed to execute:" + processBuilder.command() + " with result:" + result);
} else {
    return exit;
}&nbsp;

在JavaSE5之前使用Runtime的exec方法执行本地命令.在JavaSE5之后,可以使用ProcessBuilder执行本地命令.

一篇不错的介绍ProcessBuilder的文章:

http://www.cnblogs.com/taven/archive/2011/12/17/2291460.html

猜你喜欢

转载自liyonghui160com.iteye.com/blog/2325395