2014-05-19 39 views
0

如何在流程構建器中提供多個命令。 基本上我的第一個命令是輸入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

您需要了解流程模型,並閱讀ProcessBuilder文檔。

你的代碼所做的是什麼,創建一個進程運行命令「nusmv -int d:/files/bitshift.smv」,然後創建一個新過程至(嘗試)運行命令「走出去」,等等。顯然這不是你想要的。

你想要一個過程;您希望它運行「nusmv」,並且您想要將命令寫入其輸入。假設「nusmv」以常規的方式讀取標準輸入的命令,你應該能夠做一些事情,如:

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() 
... 
+0

我有進程生成的沒有太大的想法 – student1

+0

太感謝你了,現在你的答案對我來說是有用的我代碼正在工作:) – student1