Class ManualProcessId

java.lang.Object
com.arjuna.ats.internal.arjuna.utils.ManualProcessId
All Implemented Interfaces:
Process

public class ManualProcessId extends Object implements Process
Obtains a unique value to represent the process id via configuration. Other options include ... int pid = Integer.parseInt((new File("/proc/self")).getCanonicalFile().getName()); // linux specific Un*x specific ... String[] cmd = {"/bin/sh", "-c", "echo $PPID"}; Process proc = Runtime.getRuntime().exec(cmd); Field field = proc.getClass().getDeclaredField("pid"); field.setAccessible(true); _pid = field.getInt(proc); // although this is the child pid! proc.destroy(); byte[] ba = new byte[100]; String[] cmd = {"/bin/sh", "-c", "echo $PPID"}; Process proc = Runtime.getRuntime().exec(cmd); proc.getInputStream().read(ba); System.out.println(new String(ba)); http://java.sun.com/javase/6/docs/jdk/api/attach/spec/com/sun/tools/attach/VirtualMachine.html // JDK 6 only and ... MonitoredHost host = MonitoredHost.getMonitoredHost(null); for (Object activeVmPid : host.activeVms()) int pid = (Integer) activeVmPid; and ... Process proc = Runtime.getRuntime().exec(cmd); Field field = proc.getClass().getDeclaredField("pid"); field.setAccessible(true); _pid = field.getInt(proc); // although this is the child pid!
  • Constructor Details

    • ManualProcessId

      public ManualProcessId()
  • Method Details

    • getpid

      public int getpid()
      Specified by:
      getpid in interface Process
      Returns:
      the process id. This had better be unique between processes on the same machine. If not we're in trouble!