我想在linux terminal
中运行多个命令,如下所示:
1。我将运行假设torch
并且我写了th
命令,它打开了火炬传递。
2. 现在,如果我从java执行下一个命令,那么它将在linux终端的火炬传递中运行。
你可以采取另一个例子:
1. 首先,我将在java终端从linux终端运行python
2. 然后从java运行1+1
或python解释器中的任何内容
所以这里我的第二个命令依赖于第一个命令。我想以顺序方式在终端中运行命令。
编辑:另一种方法是do.Suppose我有一个在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中的命令,这意味着我想以交互方式运行它?
那么如何保存上一个命令的状态并将其用于下一个命令?
答案 0 :(得分:0)
使用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();