我调用可执行程序program.exe(将Lua-Script文件作为输入)。我是从Java代码执行此操作,在program.exe完成其工作后,我的Java代码会对结果进行后处理。我只允许一个program.exe实例,我在Windows 7中使用Java JDK 1.8。
以下代码无法正常工作:使用Lua-input正确启动program.exe,但随后立即终止。如果我设置延迟(2000毫秒睡眠),它运行良好,但2000毫秒是一个任意选择,它不是一个可靠的解决方案。
有更好,更可靠的解决方案吗?而不是只是试图杀死可能存在的任何program.exe,有没有办法检查是否已经有一个实例在运行?
protected void runExeFromJava (String luaFile) {
rt= Runtime.getRuntime();
try {
rt.exec("taskkill /f /im program.exe");
} catch (Exception e) {
e.printStackTrace();
}
String cmd1= Settings.getPathToExe();
String cmd2= "-lua-script=\""+luaFile+"\"";
String[] cmdArray= new String[]{cmd1,cmd2};
//try { Thread.sleep(2000); } catch (Exception e) {}
try {
rt.exec(cmdArray);
} catch (Exception e) {
e.printStackTrace();
}
}