在Java中,Process.waitFor()方法会阻塞当前线程,直到子进程完成
在Java中,Process.waitFor()
方法会阻塞当前线程,直到子进程完成。如果你发现Process.waitFor()
方法卡住了,可能是由于以下原因之一导致的:
- 子进程没有正常退出:如果子进程没有正确退出,
Process.waitFor()
方法将一直等待。你可以通过调用Process.destroy()
方法来强行终止子进程,并在必要时进行一些清理操作。
process.destroy();
ProcessBuilderprocessBuilder=newProcessBuilder(command);
processBuilder.redirectErrorStream(true);
processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
Processprocess=processBuilder.start();
process.waitFor();
Process.getOutputStream()
方法获得子进程的输入流,并写入所需的输入。ProcessBuilderprocessBuilder=newProcessBuilder(command);
processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
Processprocess=processBuilder.start();
OutputStreamoutputStream=process.getOutputStream();
outputStream.write(input.getBytes());
outputStream.close();
process.waitFor();
请根据你的具体情况选择适当的解决方法,并确保在调用Process.waitFor()
方法之前,已经处理了子进程的输出和输入。
版权声明
本文仅代表作者观点,不代表博信信息网立场。