ProcessBuilder和Runtime.exec()的区别

14
哪一个更好?"更好"的意思是哪一个拥有更好的安全性等方面的优势(而不是易用性)。

“has better security” 是什么意思? - user unknown
1个回答

32

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

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

至少在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();
}

除了Runtime.exec有重载方法能够将command作为单个字符串进行分词,而在ProcessBuilder中单个字符串则被处理成可变参数String[1] -- 参见https://dev59.com/_Gw15IYBdhLWcg3wD3dk - dave_thompson_085

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接