我想在 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/