为什么要避免在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

回到顶部