【发布时间】:2015-01-19 16:33:18
【问题描述】:
我希望我的 java 程序检查它的另一个实例是否已经在运行,如果是这种情况,则将其终止(在 Windows 平台上)。我正在用代码做这个
String CMD =
"wmic PROCESS where \"CommandLine like '%%MyProgram%%'\" Call Terminate";
Process process = Runtime.getRuntime().exec(CMD);
代码成功执行,如果找到则终止正在运行的程序,但是一旦执行,它也会强制调用程序退出(必须有一些对 System.exit() 的隐藏调用)。有没有办法在不退出调用程序的情况下执行命令?
【问题讨论】:
-
我相信这个命令也会捕获当前实例,因此它会终止所有其他实例,以及这个实例。
-
终止当前正在运行的进程而不是根本不启动新进程不是一个坏方法吗?稍微想想……
-
是的,它必须捕获当前实例,我不知道为什么我没有想到它。但问题依然存在:只有在没有其他实例在运行的情况下,如何执行程序?
-
只需检查是否有像您这样的其他进程并使用
System.exit(0)之类的内容终止您自己的实例。