用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