如何从Java在linux终端上交互执行多个命令?
我想在如何从Java在linux终端上交互执行多个命令?,java,linux,terminal,torch,Java,Linux,Terminal,Torch,我想在linux终端中运行多个命令,如下所示: 1。我将运行假设火炬,我编写了th命令,它打开了火炬promt。 2。现在,如果我从java执行下一个命令,它将在linux终端的torch promt中运行。 你可以举另一个例子,比如: 1。首先,我将从java在linux终端上运行python。 2。然后从java运行python解释器中的1+1或任何东西。 所以这里我的第二个命令依赖于第一个命令。我想以顺序的方式运行终端中的命令 编辑:另一种方法可以。假设我在linux终端上运行一个pyt
linux终端中运行多个命令,如下所示:
1。我将运行假设火炬
,我编写了th
命令,它打开了火炬promt。
2。现在,如果我从java执行下一个命令,它将在linux终端的torch promt中运行。
你可以举另一个例子,比如:
1。首先,我将从java在linux终端上运行python
。
2。然后从java运行python解释器中的1+1
或任何东西。
所以这里我的第二个命令依赖于第一个命令。我想以顺序的方式运行终端中的命令
编辑:另一种方法可以。假设我在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运行一个命令,这意味着我希望以交互方式运行它
那么如何保存上一个命令的状态并将其用于下一个命令呢?使用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终端中写入th,它将打开一个th解释器,我有一个torch7模型在该解释器中运行..现在我想在该th解释器中运行另一个命令,它以前是从Java运行的,我在p.getOutputStream和ops.write()函数中实际在做什么??我可以从java运行一个命令到linux中打开的终端吗?我不知道你的答案是否适合我的问题??你写进ops
的任何东西都是进程p的输入;在您的示例中,它被用作th
的输入,我也不确定,因为您的问题有点难以理解,对不起:-/