为什么要避免在Java中使用Runtime.exec()?
Process p = Runtime.getRuntime().exec(command);
is = p.getInputStream();
byte[] userbytes = new byte[1024];
is.read(userbytes);
我想从java在linux os中执行shell命令。但是Pmd报告说不要使用Java Runtime.exec()。为什么?是什么原因
?Runtime.exec()是否有其他选择?
回答:
除非您使用古老的JVM,java.lang.ProcessBuilder
否则可以更轻松地指定进程,设置其环境,生成它并处理其文件描述符。
此类用于创建操作系统进程。
每个
ProcessBuilder
实例管理流程属性的集合。该start()
方法Process
使用这些属性创建一个新实例。start()
可以从同一实例重复调用该方法,以创建具有相同或相关属性的新子流程。…
启动使用默认工作目录和环境的新进程很容易:
Process p = new ProcessBuilder("myCommand", "myArg").start();
这是一个使用修改后的工作目录和环境启动流程的示例:
ProcessBuilder pb = new ProcessBuilder("myCommand", "myArg1", "myArg2");
Map<String, String> env = pb.environment();
env.put("VAR1", "myValue");
env.remove("OTHERVAR");
env.put("VAR2", env.get("VAR1") + "suffix");
pb.directory(new File("myDir"));
Process p = pb.start();
以上是 为什么要避免在Java中使用Runtime.exec()? 的全部内容, 来源链接: utcz.com/qa/432436.html