当我ping 127.0.0.1 -n 5 > nul
“直接”在 Java 中运行批处理命令(等待 5 秒)时:
public class Test {
public static void main(String[] args) throws IOException, InterruptedException {
Process testProcess = Runtime.getRuntime().exec("ping 127.0.0.1 -n 5 > nul");
testProcess.waitFor();
System.out.println("foo");
}
}
字符串"foo"
立即打印出来,而不是在 5 秒后打印出来,即使该.waitFor()
方法也应该让线程等待,直到进程完成。
但是当我更改 testProcess
为 Runtime.getRuntime().exec("C:/Users/Desktop/test.bat")
执行一个批处理文件时,其中只有命令ping 127.0.0.1 -n 5 > nul
,该.waitFor()
方法会一直等到该过程完成。以便"foo"
在 5 秒后打印。
为什么呢?
编辑:
我需要删除> nul
(请参阅@Generous Badger 的评论)