2009-08-10 13 views
0

In Java oder über ein Eclipse-Plugin, ist es möglich, einen Prozess mit dem Namen ohne Drop-Down auf nativen Code zu finden? Insbesondere möchte ich ermitteln, ob ein Webbrowser ausgeführt wird, und dem Benutzer mitteilen, dass er den Browser möglicherweise neu starten muss.Einen Prozess von Java finden

Ich weiß, nativen Code ist immer eine Option, aber ich will eine andere JNI-Bibliothek einrichten vermeiden, wenn ich es vermeiden kann.

Antwort

1

Es ist eigentlich eine doppelte Frage finden Sie in der original one.

Sie haben zwei Möglichkeiten, ein solches mit dem Kommandozeilen-Tool auszuführen, die die laufenden Prozesse auflistet und dessen Ausgang analysieren. Als einer von Jay auf Linux erwähnt kann „ps“ unter Windows verwenden, würden Sie ein Tool bündeln müssen, entweder einen Port von ps von GNUWin/Cygwin/etc oder einem nativen Werkzeug wie PsList oder die sample betrachten.

Die zweite Option, die Sie bereits kennen, ist die Verwendung von JNI. Sie müssen Ihren Code jedoch nicht von Grund auf neu schreiben. Sie können JniWrapper in Betracht ziehen. Es bietet eine einfach zu verwendende Java-API für gängige native OS-Funktionen. Sie bieten auch kostenlose Lizenzen für Open Source-Projekte.

+0

Danke für den doppelten Zeiger; Ich habe eine Suche versucht, ist aber bei meiner Suche eindeutig in die falsche Richtung gegangen. Ich muss nur über Windows und OSX kümmern, so Kratzen der Ausgabe sollte ausreichend sein für das, was ich tue. –

0

Ich weiß keine Möglichkeit, eine Liste der laufenden Prozesse direkt aus Java zu erhalten. Unter Linux können Sie einen Prozess erstellen, der "ps" ausführt, den InputStream des Prozesses lesen, um die Ergebnisse abzufangen, und ihn analysieren. Sie müssen dazu nicht auf die JNI-Ebene gehen: Sie können einen Shell-Befehl mit Process ausführen.