在我的java程序中,我想杀死一个名为“DummyBroker”的进程(这是另一个java程序)。我可以使用TaskKill杀死它,但它需要进程的PID。那么我如何获取特定java进程的pid然后将其杀死呢?
答案 0 :(得分:4)
您应该看一下这个链接:Killing a process using Java
使用类似的东西:
Runtime.getRuntime().exec("taskkill /F /IM <processname>.<extension>")
否则,您可以使用tasklist
和split
的组合来查找包含行,然后找到PID
。
答案 1 :(得分:3)
最后找到了一个简单的解决方案here
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程序中调用批处理文件。
答案 2 :(得分:1)
Runtime.getRuntime()。exec(&#34; taskkill / F / IM&#34; + TASKNAME); 虽然这只会被任务名称
杀死答案 3 :(得分:0)
浏览此链接... http://www.golesny.de/p/code/javagetpid
像这样使用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)));
}