1

当我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()方法也应该让线程等待,直到进程完成。

但是当我更改 testProcessRuntime.getRuntime().exec("C:/Users/Desktop/test.bat")执行一个批处理文件时,其中只有命令ping 127.0.0.1 -n 5 > nul,该.waitFor()方法会一直等到该过程完成。以便"foo"在 5 秒后打印。

为什么呢?


编辑:

我需要删除> nul(请参阅@Generous Badger 的评论)

4

0 回答 0