taskkill并从Java代码重启可执行文件

时间:2018-06-11 07:33:06

标签: java taskkill

我调用可执行程序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(); 
    }
}

0 个答案:

没有答案