GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Rufen Sie die Unterprozess-ID in Java ab

Ich habe es vor einiger Zeit versucht (und bin gescheitert). Am Ende habe ich meinen Befehl in ein Shell-Skript verpackt, das die PID in eine Datei abgelegt hat. Nicht die beste Lösung, aber es hat mich über diese Hürde gebracht.


Dafür gibt es noch keine öffentliche API (siehe http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4244896), aber es gibt Workarounds.

Eine erste Problemumgehung wäre die Verwendung eines externen Programms wie ps und mit Runtime.exec() aufzurufen um die PID zu bekommen :)

Ein anderer basiert darauf, dass der java.lang.Process class abstrakt ist und dass Sie abhängig von Ihrer Plattform tatsächlich eine konkrete Unterklasse erhalten. Unter Linux erhalten Sie einen java.lang.UnixProcess welches ein privates Feld int pid hat . Mithilfe von Reflektion können Sie den Wert dieses Felds leicht abrufen:

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

Linux
  1. So installieren Sie Java unter Linux

  2. Linux – Wie bringt man Oracle Java 7 dazu, mit Setcap Cap_net_bind_service+ep zu arbeiten?

  3. Wie erhalte ich den Pfad eines Prozesses in Unix / Linux

  4. Gibt es eine Möglichkeit, die UID des Benutzers auf einem Linux-Computer mit Java abzurufen?

  5. Wie bekomme ich die Prozess-ID, um einen Nohup-Prozess zu beenden?

Installieren Sie Java manuell unter Linux

So überprüfen Sie die Java-Version

Welcher Prozess hat Pid 0?

Wie kann Webex vollständig mit Ubuntu 12.04 arbeiten?

ObjectRocket-Dokumentation

Übergeordnete PID eines anderen Prozesses programmgesteuert abrufen?