Sun的JDK里获取当前进程ID的方法(hack)

来源:互联网 发布:linux 命令行删除目录 编辑:程序博客网 时间:2024/06/07 01:56
import java.lang.management.ManagementFactory;import java.lang.management.RuntimeMXBean;public class ShowOwnPID {    public static void main(String[] args) throws Exception {        int pid = getPid();        System.out.println("pid: " + pid);        System.in.read(); // block the program so that we can do some probing on it    }        private static int getPid() {        RuntimeMXBean runtime = ManagementFactory.getRuntimeMXBean();        String name = runtime.getName(); // format: "pid@hostname"        try {            return Integer.parseInt(name.substring(0, name.indexOf('@')));        } catch (Exception e) {            return -1;        }    }}

 

Java标准库里常见的公有API确实是没有获取当前进程的ID的方法,有时候挺郁闷的,就是需要自己的PID。
于是有各种workaround,其中有很靠谱的通过JNI调用外部的C/C++扩展,然后调用操作系统提供的相应API去获取PID;也有些不怎么靠谱的hack。这里要介绍的就是后者之一,只在Sun JDK或兼容的JDK上有效的方法。

转载至:http://rednaxelafx.iteye.com/blog/716918

 

0 0