import java.lang.management.RuntimeMXBean;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import sun.management.ManagementFactory;
/**
*
* @author Yaswanth
*
*/
public class ProcessID {
public static void main(String[] args) throws SecurityException, NoSuchFieldException, ClassNotFoundException, IllegalArgumentException, IllegalAccessException, NoSuchMethodException, InvocationTargetException {
System.out.println("PID : "+getProcessId());
}
/**
*
* @return PID , -1 in case of error
*/
public static int getProcessId(){
try {
RuntimeMXBean mxBean = ManagementFactory.getRuntimeMXBean();
Class runtimeImplClass = Class.forName("sun.management.RuntimeImpl");
Field jvmField = runtimeImplClass.getDeclaredField("jvm");
jvmField.setAccessible(true);
Class vMManagementImplClass = Class.forName("sun.management.VMManagementImpl");
Method getVmIdMethod = vMManagementImplClass.getDeclaredMethod("getProcessId");
getVmIdMethod.setAccessible(true);
Object vMManagementImplObject = jvmField.get(mxBean);
return (Integer) getVmIdMethod.invoke(vMManagementImplObject);
} catch (Exception e) {
System.err.println("ERROR");
}
return -1;
}
}