2

我正在编写几个 java 程序,在完成我想做的任何事情后,我需要在一个单独的 JVM 中杀死/清理。为此,我需要获取我正在创建的 java 进程的 PID。

4

3 回答 3

6

jps -l适用于 Windows 和 Unix。您可以使用Runtime.getRuntime().exec. 的示例输出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]);
        }
    }
}
于 2011-10-20T10:40:06.267 回答
0

你可以尝试执行命令

pidof <program name>

让你找到你的程序的pid。

它在 Linux 环境中。

于 2011-10-20T10:20:45.690 回答
0

请注意,Java 9 将公开一些与系统无关的方法,例如:

System.out.println("Your pid is " + Process.getCurrentPid());
于 2016-08-06T22:51:36.870 回答