我正在编写一个java程序,它将在Linux Ubuntu OS上运行一些已安装的工具,我需要在同一个进程中执行两个连续的命令,但是让第一个完全执行,然后调用第二个。我尝试使用“\ n”来分隔这两个命令,如下面的代码所示,但它没有用。
public static void main (String args[])
{
List<String> command = new ArrayList<String>();
command.add("spin");
command.add("-p");
command.add("-u100");
command.add("D:\\promela\\peterson.pml");
command.add("\n");
command.add("cc -o pan pan.c");
command.add("./pan");
String[] commandArray = command.toArray(new String[command.size()]);
ProcessBuilder pb = new ProcessBuilder(commandArray);
Process process;
try {
process = pb.start();
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
BufferedReader errReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
String errline, outline;
for(String s : command)
{
System.out.println(s + " ");
}
while ((outline = br.readLine()) != null)
{
System.out.println(outline);
}
while ((errline = errReader.readLine()) != null)
{
System.err.println(errline);
}
} catch (IOException e)
{
e.printStackTrace();
}
}
答案 0 :(得分:0)
我认为不能这样做:
启动2个流程会不会更容易?
附注:你不应该一个接一个地读出out和err流,你应该在不同的线程中并行读取它们,或者更容易,使用ProcessBuilder#redirectErrorStream
所以你只需要读取一个流(出)。