我需要运行.exe
文件,并在启动此文件后在进程加载并运行后执行一些脚本,然后再终止。.exe
因此,如果先前未完全加载,脚本将引发异常..
我怎么知道该.exe
文件已完全加载?
我可以用它Timer
来安排脚本执行到某个时间,但这不是一个好主意,因为.exe
在一些安排时间之后文件可能仍然无法启动。
查看Apache Commons Exec,它处理了很多进程启动的痛苦。特别看一下DefaultExecuteResultHandler,它会在启动的进程退出时获得回调。只要您没有收到该回调,您启动的进程仍在运行。
请注意(如果不清楚),如果您的 Java 进程启动一个可执行文件,它将在该进程终止时立即获得回调,前提Process.waitFor()
是已被调用。
作为 exe 文件职责中的最后一件事,在共享位置创建一个文件。从您的其他代码中检查文件。这样该共享文件将充当锁。
您可以定期检查正在运行的进程列表,直到在列表中找到可执行文件 - 一旦您看到它,您就知道它已经启动。
注意:例如,如果可执行文件在 1 秒后结束,并且您每 10 秒检查一次进程,您可能会错过它。