如何在进程构建器中提供多个命令。 基本上我的第一个命令是进入nusmv接口,然后进一步的命令是nusmv命令来创建xml文件,但是我的程序在第一个命令后没有工作,它没有采取进一步的命令。
String[][] commands = {
{"nusmv", "-int", "D:/files/bitshift.smv"},
{"go"},
{"process_model"},
{"show_traces","-p","4","-o","D:output.xml"}};
for (String[] str : commands) {
ProcessBuilder pb = new ProcessBuilder(str);
pb.redirectErrorStream(true);
Process process = pb.start();
InputStream is = process.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
String inputLine;
System.out.println(inputLine);
}
System.err.println("next one");
}
答案 0 :(得分:0)
您需要了解对流程模型的理解,并根据这一点阅读ProcessBuilder文档。
您的代码所做的是,创建一个运行命令的进程" nusmv -int D:/files/bitshift.smv" ;,然后创建一个 new 进程(尝试to)运行命令" go",依此类推。显然,这不是你想要的。
你想要一个过程;你希望它运行" nusmv",并且你想要将命令写入其输入。假设" nusmv"以常规方式从stdin读取命令,你应该能够做到这样的事情:
ProcessBuilder pb = new ProcessBuilder("numv","-int","D:/files/bitshift.smv");
Process process = pb.start();
// Write commands
PrintWriter commands = new PrintWriter(process.getOutputStream());
commands.println("go");
commands.println("processmodel");
commands.println("show_traces -p 4 -o D:output.xml");
commands.close();
// Read from process.getInputStream(), process.waitFor(), process.exitValue()
...