在Java程序中,经常会遇到需要执行外部命令的情况,此时可以使用Runtime.getRuntime().exec(commands)。
场景:java程序中需要执行shell命令
代码:
Process process = Runtime.getRuntime().exec(commands);
// 重定向错误输出
StreamRedirect errorStream = new StreamRedirect(process.getErrorStream(), "ERROR");
errorStream.start();
// 重定向标准输出
StreamRedirect outStream = new StreamRedirect(process.getInputStream(), "STDOUT");
outStream.start();
疑问:要不要process.waitFor();
通过Process可以对获取脚本执行的输出,然后在Java中进行相应处理。process.waitFor();会导致当前线程等待子进程执行结束,在我们的应用场景中,不需要等待子进程执行结束。但是不调用process.waitFor()会导致子进程立刻结束退出吗?待测试。