Process p = Runtime.getRuntime().exec(command);
is = p.getInputStream();
byte[] userbytes = new byte[1024];
is.read(userbytes);
我想从Java中执行Linux操作系统中的一条shell命令。但是PMD报告说不要使用Java Runtime.exec(),为什么?有什么原因吗?有没有Runtime.exec()的替代方法呢?
Process p = Runtime.getRuntime().exec(command);
is = p.getInputStream();
byte[] userbytes = new byte[1024];
is.read(userbytes);
我想从Java中执行Linux操作系统中的一条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();