我们究竟可以在 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
阅读此内容了解更多信息:
我在任何地方都找不到具体解释 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
阅读此内容了解更多信息: