我们究竟可以在 Process.exec() 中的字符串数组中存储什么?

What exactly can we store inside of string array in Process.exec()

我在任何地方都找不到具体解释 Process exec(String[] cmdarray) 方法的 String[] cmdarray 中可以存储什么的地方。我找到了一些地方 cmdarray 来存储数组命令或文件位置和远程服务器名称。所以我想知道我们到底可以在 String[] cmdarray 中存储什么?

根据文档:

Executes the specified command and arguments in a separate process.

将其视为 JVM 中的命令行界面。它采用可以使用 CMD 调用的所有进程名称。例如:您可以在 Ubuntu 中将 String chromium 传递给 exec,您会注意到 chromium 已启动。

数组的第一个元素是命令,如cmd。其他都是论据。例如:

try {
    Process p = Runtime.getRuntime().exec(new String[] {"cmd", "/c", "echo", "This", "is", "an", "argument"});
    BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String s;
    while((s = reader.readLine()) != null) {
        System.out.println(s);
    }
} catch (IOException e) {
    e.printStackTrace();
}

这里的"/c""echo""This""is""an""argument"都是命令的参数cmd。输出为:

This is an argument 

如果你想运行多个命令,你必须使用双符号来表示另一个命令正在开始:

try {
    Process p = Runtime.getRuntime().exec(new String[] { "cmd", "/c", "echo", "This", "is", "an", "argument",
            "&&", "echo", "this", "command", "snuck", "in" });
    BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String s;
    while ((s = reader.readLine()) != null) {
        System.out.println(s);
    }
} catch (IOException e) {
    e.printStackTrace();
}

这里每个命令都被发送到 cmd。我不是肯定的,但我相信你必须开始一个新的过程来向别处发送命令。输出为:

This is an argument 
this command snuck in

阅读此内容了解更多信息: