如何获取生成的Java进程的PID

我正在编写几个Java程序,在完成我想做的所有事情之后,需要在单独的JVM中终止/清理.为此,我将需要获取要创建的Java进程的PID.

解决方法:

jps -l在Windows和Unix上均可使用.您可以使用Runtime.getRuntime().exec从Java程序调用此命令. jps -l的示例输出如下

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]);
        }
    }
}
上一篇:python-twisted.internet.reactor.spawnProcess引发OSError(13,’权限被拒绝’)


下一篇:如何从python程序中生成多个python脚本?