在Java中,Process.waitFor()
方法會阻塞當前線程,直到子進程完成。如果你發現Process.waitFor()
方法卡住了,可能是由于以下原因之一導致的:
Process.waitFor()
方法將一直等待。你可以通過調用Process.destroy()
方法來強行終止子進程,并在必要時進行一些清理操作。process.destroy();
ProcessBuilder processBuilder = new ProcessBuilder(command);
processBuilder.redirectErrorStream(true);
processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
Process process = processBuilder.start();
process.waitFor();
Process.getOutputStream()
方法獲得子進程的輸入流,并寫入所需的輸入。ProcessBuilder processBuilder = new ProcessBuilder(command);
processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
Process process = processBuilder.start();
OutputStream outputStream = process.getOutputStream();
outputStream.write(input.getBytes());
outputStream.close();
process.waitFor();
請根據你的具體情況選擇適當的解決方法,并確保在調用Process.waitFor()
方法之前,已經處理了子進程的輸出和輸入。