【发布时间】:2019-02-24 04:22:02
【问题描述】:
我是一名刚开始学习基于Java的多线程编程的学生。
作为我的第一个练习之一,有人告诉我创建一个执行 Windows 计算器的进程,然后等到该进程完成,然后发送一条消息。这是我所做的代码的摘录。
Process p = Runtime.getRuntime().exec("calc.exe");
p.waitFor();
System.out.println("Process finished");
当我执行它时,Windows 10 计算器打开,然后我收到 “进程完成” 消息。我不知道为什么在进程仍在运行时收到消息,因为计算器已打开,所以我尝试运行完全相同的代码,但使用 "notepad.exe" 作为命令执行。
这一次执行的结果是预期的:直到我关闭记事本才收到消息。
我尝试打开其他 Windows 10 默认程序,如 "explorer.exe",其中一些以应有的方式运行,而另一些则没有。
我对它的工作方式的想法是 "explorer.exe" 或 "calc.exe" 像某种启动器一样工作,因此当他们收到执行它们的进程时,他们会创建自己的进程,我无法使用 Java 程序控制这些进程。这是我完全猜测。
实际问题是:为什么会这样? Windows 10 计算器和其他程序在进程方面是如何工作的?
提前致谢。
【问题讨论】: