java - 如何从 Java 在 linux 终端中交互式地执行多个命令?

标签 java linux terminal torch

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

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

你可以举另一个例子:

1. 首先,我将从 java 在 linux 终端中运行 python
2. 然后从 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();
            }

        }
    }

但是现在在执行此命令后,我如何在提示符中运行来自 java 的命令,这意味着我需要以交互方式运行它??

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

最佳答案

使用 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();

关于java - 如何从 Java 在 linux 终端中交互式地执行多个命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36475189/

相关文章:

Linux 命令可以知道 postgres 中任何时间点的事件数据库连接数?

terminal - ZSH iterm2增加行数历史记录

c - 使用系统函数 read() 和 write() 时 Linux 在终端中输出的机制

java - 无法在 Windows 10 中的 Docker 上运行 Bamboo 构建规范

java - 删除 Android 应用程序上的 'menu'

c++ - 如何发出包含 'suspicious' 和 '-Wmain' 字样的警告?

c - 如何在用户将两个字符作为输入插入时测量两个字符之间的时间(以秒为单位)

终端和 shell 脚本之间的 Bash glob 模式行为不同

java - Java 中的条件运算符抛出意外的 NullPointerException

java - 在Java中使用 "saveToFile"方法需要导入什么类?