Java的java.lang.Runtime.exec()和PHP的exec()之间有什么区别?

时间:2011-12-11 16:21:47

标签: java php runtime.exec command-execution

以下内容在Java中不起作用(抛出异常):

Runtime.getRuntime().exec("cd mydir; myprog");

同样适用于PHP:

exec("cd mydir; myprog");

Java的实现到底有什么不同?为什么(乍一看似乎更有限)?

3 个答案:

答案 0 :(得分:2)

java exec命令使用系统命令解释程序。像“cd mydir; myprog”这样的东西依赖于系统命令行解释器(例如在Linux cmd上,在linux sh上)将它分成两个单独的命令并执行它们中的每一个。 java不会调用系统命令解释器,因此不起作用。您需要单独调用每个命令,或者自己调用所需的解释器作为命令行的一部分。

答案 1 :(得分:0)

我看到人们有这样的问题,我确信有几种方法,但是我见过大多数人回答的是这个。在它之前添加cmd。

Runtime.getRuntime().exec("cmd cd mydir; myprog");

答案 2 :(得分:-1)

假设您在服务器上的CLI环境中运行applet而不是Java?如果是这样,那么您的Java运行时正在客户端计算机上运行,​​而不是在服务器上运行。

与分号相比,Java还有更好的方法来处理多个命令。而不是使用签名:

Runtime.exec(String)

尝试对每个命令使用它:

Runtime.exec(String[])

并使命令的每个参数成为String数组中的一个元素。