如何用Java判断何时关闭命令提示符实例?

锡安

我遇到了一个问题,而且我在Java领域还很新。对于上下文,我正在Javafx中制作具有批处理后端的GUI。GUI只需要调用一次Batch脚本(core.bat),并知道它在被调用后何时结束。当前,我使用以下代码调用批处理脚本:

Runtime runtime = Runtime.getRuntime();
try {
    Process p1 = runtime.exec("cmd /c start core.bat");
} catch(IOException ioException) {}

当我需要知道批处理脚本何时结束时,该问题就起作用了。我将给出到目前为止我已经尝试过的示例,但是过去三个小时来我已经尝试了很多事情,并且覆盖了我的代码很多次,以至于我不知道了。

任何解决方案都可以。我只需要某种方法来确定Batch脚本何时结束,之后它将自行关闭。因此,知道批处理脚本何时结束并不是唯一可能的方法。也可以知道运行脚本的命令提示符实例何时结束。任何解决方案都是有帮助的,谢谢。

dan1st:

看一下Process#waitFor等待直到过程完成。

如果您不想等待新线程,则可能需要启动它,而仅在程序完成时才得到通知/执行代码(JavaFX中阻塞似乎不是一个好主意):

Runtime runtime = Runtime.getRuntime();
try {
    Process p1 = runtime.exec("core.bat");
    Thread t=new Thread(()->{
        try{
            p1.waitFor();
            //your code
        }catch(InterruptedException e){
            Thread.currentThread.interrupt();//not actually needed, but I think it is a good practise and...SonarLint :)
        }
    });
    t.setDaemon(true);
    t.start();
} catch(IOException ioException) {}

另外,您执行了cmd命令start,该命令将启动一个新进程,您无法轻松控制它。只需执行core.batcmd /c core.bat

setDaemon(true); 将您的线程标记为守护程序线程,这不会影响程序的结尾(如果所有不是守护程序线程的线程都结束,则结束)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章