在我的java程序中,我想杀死一个名为 "DummyBroker "的进程(这是另一个java程序)。我可以用TaskKill杀死它,但它需要进程的PID,那么我怎样才能获取特定java进程的pid,然后杀死它呢?
你应该看看这个链接。 使用Java杀死一个进程
并使用类似于.的东西。
Runtime.getRuntime().exec("taskkill /F /IM <processname>.<extension>")
否则,你也许可以使用一个组合的 tasklist
和 split
找到包含的行,然后找到 PID
.
终于找到了一个简单的解决方案 此处
jps - Java虚拟机进程状态工具,可用于杀死一个以其名字命名的java进程。
for /f "tokens=1" %i in ('C:\java\jdk-7u45-windows-x64\bin\jps -m ^| find "DummyBroker"') do ( taskkill /F /PID %i )
我们可以在批处理文件中添加上述内容,并简单地从java程序中调用批处理文件。
Runtime.getRuntime().exec("taskkill /F /IM " + TASKNAME);
虽然这只是通过任务名来杀死
通过这个链接...http:/www.golesny.depcodejavagetpid
使用 java.lang.management.ManagementFactory
这样
RuntimeMXBean rtb = ManagementFactory.getRuntimeMXBean();
String processName = rtb.getName();
int result = 0;
Pattern pattern = Pattern.compile("^([0-9]+)@.+$", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(processName);
if (matcher.matches()) {
result = new Integer(Integer.parseInt(matcher.group(1)));
}