进程构建器中的多个命令

时间:2014-05-19 09:53:16

标签: java

如何在进程构建器中提供多个命令。 基本上我的第一个命令是进入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");
    }

1 个答案:

答案 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()
...