2011-05-04 86 views

回答

31

易用性是这两者之间唯一真正的区别。

请注意,易用性可以通过帮助避免误用来提高安全性。

至少在OpenJDK的6 Runtime.exec()使用ProcessBuilder实现:

public Process exec(String[] cmdarray, String[] envp, File dir) 
    throws IOException { 
    return new ProcessBuilder(cmdarray) 
     .environment(envp) 
     .directory(dir) 
     .start(); 
} 
+0

除了'Runtime.exec'有重载将'command'作为单个'String'并标记它的重载,但是在'ProcessBuilder'中,一个'String'被视为可变参数'String [1]' - 参见http ://stackoverflow.com/questions/6856028/difference-between-processbuilder-and-runtime-exec – 2017-05-18 21:08:45