GNU/Linux >> Znalost Linux >  >> Linux

Získejte ID podprocesu v Javě

Před chvílí jsem se o to pokusil (a nepodařilo se mi to). Nakonec jsem zabalil svůj příkaz do skriptu shellu, který vypsal pid do souboru. Není to nejlepší řešení, ale překonalo mě to.


Stále pro to neexistuje žádné veřejné API (viz http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4244896), ale existují zástupná řešení.

Prvním řešením by bylo použití externího programu jako ps a volat jej pomocí Runtime.exec() získat pid :)

Další je založen na skutečnosti, že java.lang.Process třída je abstraktní a že ve skutečnosti získáte konkrétní podtřídu v závislosti na vaší platformě. V systému Linux získáte java.lang.UnixProcess který má soukromé pole int pid . Pomocí odrazu můžete snadno získat hodnotu tohoto pole:

Field f = p.getClass().getDeclaredField("pid");
f.setAccessible(true);
System.out.println( f.get( p ) );

Linux
  1. Linux – Jak zajistit, aby Oracle Java 7 fungoval se Setcap Cap_net_bind_service+ep?

  2. Který proces má Pid 0?

  3. Dokumentace ObjectRocket

  1. Jak získám cestu k procesu v Unixu / Linuxu

  2. Jak získat ID procesu pro ukončení procesu nohup?

  3. Jak získat PID z rozvětveného podřízeného procesu ve skriptu shellu

  1. Zabijte java proces (v linuxu) názvem procesu místo PID

  2. Jak získat PID podle názvu procesu?

  3. Jak mohu získat dočasnou složku počítače se systémem maven?