用C语言编程时,能够用getpid()函数获取进程的PID,但在JAVA中,竟然没有提供能够直接获取进程PID的方法,不知SUN公司是怎么想的。虽然在JAVA编程时不多用到PID,但有时为了可以在Linux下把一个在后台运行的JAVA应用程序终止,可能须要用到PID,固然,终止后台运行的JAVA应用程序的方法不少,找到它的PID,经过kill -9 pid命令去杀死它是其中一种方法。下面提供一种在JAVA程序中获取当前程序PID的方法。java
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为:6916shell
打开Windows的资源管理器,能够看到当前运行的JAVA应用程序的PID,以下:编程
这样,获取到当前JAVA应用程序的PID后,就能够直接把PID写到一个临时文件中,须要关闭该应用程序时,直接手动执行kill -9 pid命令,或者写一个shell脚本,在脚本中执行kill命令。segmentfault