我正在编写几个Java程序,在完成我想做的所有事情之后,需要在单独的JVM中终止/清理工作。为此,我将需要获取要创建的Java进程的PID。
jps -l在Windows和Unix上均可使用。您可以使用从Java程序中调用此命令Runtime.getRuntime().exec。的样本输出jps -l如下
jps -l
Runtime.getRuntime().exec
9412 foo.bar.ClassName 9300 sun.tools.jps.Jps
您可能需要对此进行解析,然后检查标准名称,然后从相应的行中获取pid。
private static void executeJps() throws IOException { Process p = Runtime.getRuntime().exec("jps -l"); String line = null; BufferedReader in = new BufferedReader(new InputStreamReader( p.getInputStream(), "UTF-8")); while ((line = in.readLine()) != null) { String [] javaProcess = line.split(" "); if (javaProcess.length > 1 && javaProcess[1].endsWith("ClassName")) { System.out.println("pid => " + javaProcess[0]); System.out.println("Fully Qualified Class Name => " + javaProcess[1]); } } }