谁能澄清一下以下过程是否是处理进程流的正确方法,没有任何流缓冲区已满和阻塞问题
我正在从 java 程序调用外部程序,我正在使用 ProcessBuilder 来构建流程,并在执行后
Process gpgProcess = processBuilder.start();
Run Code Online (Sandbox Code Playgroud)
我正在使用一种方法来处理该过程
String executionResult = verifyExecution(gpgProcess);
Run Code Online (Sandbox Code Playgroud)
在我的方法中,我试图处理流程
private String verifyExecution(Process gpgProcess) throws IOException, InterruptedException {
String gpgResult = null;
BufferedReader stdOut = new BufferedReader(new InputStreamReader(gpgProcess.getInputStream()));
BufferedReader stdErr = new BufferedReader(new InputStreamReader(gpgProcess.getErrorStream()));
gpgProcess.waitFor();
if(stdErr.ready()) {
gpgResult = "Exit code: " + gpgProcess.exitValue() + "\n" + readStream(stdErr);
} else if(stdOut.ready()) {
gpgResult = "Exit code: " + gpgProcess.exitValue() + "\n" + readStream(stdOut);
} else {
gpgResult = "Exit code: " + gpgProcess.exitValue();
} …Run Code Online (Sandbox Code Playgroud)