簡體   English   中英

如何將Enter鍵從Java應用程序傳遞到命令行

[英]How to pass the enter key press to command line from a java application

我正在編寫一個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();

    }
}

我認為無法做到:

  • 您可以啟動終端/控制台/ bash進程,在其中可以“鍵入”命令,或者
  • 您啟動了無法解析這些命令的特定可執行文件,它將無法正常工作。

啟動2個進程會更容易嗎?

旁注:您不應該一個接一個地讀取out和err流,您應該在單獨的線程中並行讀取它們,或者更方便地使用ProcessBuilder#redirectErrorStream因此您只需要從一個流(out)讀取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM