【发布时间】:2014-02-10 18:43:59
【问题描述】:
我正在尝试创建一个程序,允许我通过带有参数的终端(如果你想知道,它是 raspberry pi 的 OmxPlayer)执行命令,但我希望能够与它进行交互已启动命令。
例如我想做:omxplayer -win x1 y1 x2 y2 然后可以按“p”暂停视频/音频媒体
我已经有一些可以使用参数启动 omxplayer 的东西(实际上它是“ls”,但它应该以完全相同的方式工作)但是我不明白一旦我通过启动命令后如何与终端交互进程构建器。
这是我目前所拥有的:
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class Main1 {
public static void main(String a[]){
InputStream is = null;
ByteArrayOutputStream baos = null;
List<String> commands = new ArrayList<String>();
commands.add("ls");
commands.add("-l");
commands.add("/");
ProcessBuilder pb = new ProcessBuilder(commands);
try {
Process prs = pb.start();
is = prs.getInputStream();
byte[] b = new byte[1024];
int size = 0;
baos = new ByteArrayOutputStream();
while((size = is.read(b)) != -1){
baos.write(b, 0, size);
}
System.out.println(new String(baos.toByteArray()));
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try {
if(is != null) is.close();
if(baos != null) baos.close();
} catch (Exception ex){}
}
}
}
【问题讨论】:
-
看看这里的答案,我想这会有所帮助。 stackoverflow.com/questions/17216049/…
-
这与我想要做的很接近,但并不完全相同。我正在尝试与我执行的命令进行交互,而不是在第一个命令之后立即执行第二个命令:/
-
写入进程的 STDIN:docs.oracle.com/javase/7/docs/api/java/lang/… 怎么样?
标签: java shell process command processbuilder