簡體   English   中英

使用InputStream讀取Java進程狀態,然后使用OutputStream發送命令提示符

[英]Reading Java process status with InputStream and then sending command prompts with OutputStream

我正在閱讀使用Java流程調用的腳本的輸出。 但是,在腳本運行的中間,在某些情況下它將提示用戶回答y / n以繼續。 但是,在閱讀了StackOverflow上的許多文章之后,我仍然堅持檢測提示,然后在進程仍在運行時發送響應。

如果有人有任何想法,那就太好了。

我試過從Scanner類和System.console中讀取內容,但沒有成功。

這是我正在使用的部分代碼。

    Process p;

    String file = "./upgrade.sh";


        cmds.add(file);
        cmds.add(sourcePath);
        cmds.add(outputDirectoryPath);
        cmds.add(zip);
        cmds.add("-c");
    //}

    pb = new ProcessBuilder(cmds);
    pb.directory(new File(binDir));

    p = pb.start();

    BufferedReader reader = new BufferedReader (new InputStreamReader(p.getInputStream()));
    BufferedReader reader2 = new BufferedReader (new InputStreamReader(p.getErrorStream()));
    BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));

    try 
    {
        String line = reader.readLine();
        while (line != null) 
        {
            System.out.println(line);
            line = reader.readLine();
        }


        reader.close();
        writer.close();
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    }

    p.destroy();

問題是您使用了BufferedReader 僅當它已讀取整行(即行分隔符)時才返回。 但是,如果腳本要求提供提示,則不會出現行分隔符! 結果它將不會返回。

您必須使用其他類型的閱讀器才能控制過程。

暫無
暫無

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

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