【问题标题】:How to execute multiple commands interactively in linux terminal from Java?如何在 Java 的 linux 终端中交互地执行多个命令?
【发布时间】:2016-07-28 06:37:52
【问题描述】:

我想在linux terminal 中运行多个命令,如下所示:

1. 我会运行假设torch 并且我写了th 命令并打开了火炬提示。
2. 现在,如果我从 java 执行下一个命令,那么它将在 linux 终端的 torch promt 中运行。

你可以举另一个例子比如:

1.首先我会在 linux 终端从 java 中运行 python
2. strong> 然后从 java 运行 1+1 或 python 解释器中的任何内容。
所以这里我的第二个命令依赖于第一个命令。我想按顺序在终端中运行命令。

编辑:另一种方法可以。假设我有一个在 linux 终端中运行的 python 解释器,现在我想从 java 执行一个命令,该命令将在该特定打开的 linux 终端的 python 解释器中运行. 我可以这样做吗?

我尝试使用这个来运行命令:

        String line;
            try
            {

                String execstr= "th"; //It opens the torch promt in linux terminal.

                Process p = Runtime.getRuntime().exec(execstr);
                BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));

                /*if((line= input.readLine())==null)
                    System.out.println("blank");*/

                while ((line = input.readLine()) != null) 
                {
                    System.out.println(line);
                }
                input.close();
            }
            catch(Exception e)
            {

                e.printStackTrace();
            }

        }
    }

但是现在在这个命令之后,我怎样才能在 promt 中运行来自 java 的命令,这意味着我想要它交互??

那么如何保存上一个命令的状态并将其用于下一个命令??

【问题讨论】:

    标签: java linux terminal torch


    【解决方案1】:

    使用p.getOutputStream() 获取一个流,您可以在其中为您运行的程序写入所需的输入。 (我知道,命名有点混乱)。

    只是相关部分:

        Process p = Runtime.getRuntime().exec(execstr);
        BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
        OutputStream ops = p.getOutputStream();
        ops.write("echo hello world".getBytes());
        ops.close();            
    
        while ((line = input.readLine()) != null) 
        {
           System.out.println(line);
        }
        input.close();
    

    【讨论】:

    • 如果我在 linux 终端中编写它,它将打开一个解释器,并且我在该解释器中运行了一个 torch7 模型。现在我想在之前运行的那个解释器中运行另一个命令来自java
    • 我在 p.getOutputStream 和 ops.write() 函数中实际上在做什么?我可以从 java 对 linux 中打开的终端运行命令吗??
    • 我不知道你的答案是否适合我的问题??
    • 无论你在ops 中写入什么都是进程p 的输入;在您的示例中,它用作th 的输入
    • 我也不确定,因为你的问题有点难以理解,抱歉:-/
    猜你喜欢
    • 1970-01-01
    • 2015-08-16
    • 1970-01-01
    • 2011-05-09
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    相关资源
    最近更新 更多