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 http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html使得指定进程、设置其环境、生成进程以及处理其文件描述符变得更加容易。
该类用于创建操作系统进程。
Each 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();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)