【问题标题】:What exactly can we store inside of string array in Process.exec()我们究竟可以在 Process.exec() 中的字符串数组中存储什么
【发布时间】:2017-12-28 17:15:54
【问题描述】:

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

【问题讨论】:

    标签: java runtime runtime.exec


    【解决方案1】:

    数组的第一个元素是命令,例如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
    

    阅读本文了解更多信息:https://stackoverflow.com/a/18867097/5645656

    【讨论】:

    • 那么,可以是“cmd”、“cmd”、“cmd”等命令的列表吗?
    • 是的,如果您查看this answer,您会发现添加双& 符号会将每个命令的结束标记为下一个命令的开始。
    • 我的荣幸! =)
    【解决方案2】:

    根据文档:

    在单独的进程中执行指定的命令和参数。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-11
      • 1970-01-01
      • 2015-06-19
      • 2010-09-20
      相关资源
      最近更新 更多