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