【问题标题】:java run shell command with EOFjava运行带有EOF的shell命令
【发布时间】:2015-02-23 20:17:26
【问题描述】:

我想从 java 运行这个命令,但我做不到。 你能帮我吗? 当我尝试从 ssh 运行它时,它工作正常。

String cmd="myprog -t

进程 p = Runtime.getRuntime().exec(cmd);

【问题讨论】:

    标签: java process exec eof


    【解决方案1】:

    您的命令正在写入您进程的标准输入。您可以改用 Java 代码写入该进程。类似的,

    String cmd = "myprog -t";
    String arg = "show version";
    try {
        Process p = Runtime.getRuntime().exec(cmd);
        PrintStream ps = new PrintStream(p.getOutputStream());
        ps.println(arg);
        ps.flush();
        final StringBuilder sb = new StringBuilder();
        final InputStream is = p.getInputStream();
        Thread t = new Thread(new Runnable() {
            @Override
            public void run() {
                try (BufferedReader br = new BufferedReader(
                        new InputStreamReader(is))) {
                    String line;
                    while ((line = br.readLine()) != null) {
                        sb.append(line).append(System.lineSeparator());
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
        t.start();
        try {
            p.waitFor();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        try {
            t.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(sb.toString());
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    【讨论】:

    • 有些地方被挡住了
    猜你喜欢
    • 2011-01-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-25
    • 2019-08-15
    • 1970-01-01
    • 2016-05-16
    • 2014-10-30
    • 2015-10-02
    相关资源
    最近更新 更多