JAVA获取进程PID

4698 查看

用C语言编程时,可以用getpid()函数获取进程的PID,但在JAVA中,居然没有提供可以直接获取进程PID的方法,不知SUN公司是怎么想的。虽然在JAVA编程时很少用到PID,但有时为了能够在Linux下把一个在后台运行的JAVA应用程序终止,可能需要用到PID,当然,终止后台运行的JAVA应用程序的方法很多,找到它的PID,通过kill -9 pid命令去杀死它是其中一种方法。下面提供一种在JAVA程序中获取当前程序PID的方法。

import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;

public class JavaPID {
    public static void main(String[] args) {
        RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();
        String name = runtime.getName();
        System.out.println("当前进程的标识为:"+name);
        int index = name.indexOf("@");
        if (index != -1) {
            int pid = Integer.parseInt(name.substring(0, index));
            System.out.println("当前进程的PID为:"+pid);
        }
        try {
            //这里休息60秒,是为了在windows管理器查看该应用程序的进程PID
            Thread.sleep(60*1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

控制台输出如下:
当前进程的标识为:6916@lidonghao-PC
当前进程的PID为:6916

打开Windows的资源管理器,可以看到当前运行的JAVA应用程序的PID,如下:

这样,获取到当前JAVA应用程序的PID后,就可以直接把PID写到一个临时文件中,需要关闭该应用程序时,直接手动执行kill -9 pid命令,或者写一个shell脚本,在脚本中执行kill命令。