de.bsvrz.sys.startstopp.prozessvew
Class BetriebssystemProzess
java.lang.Object
de.bsvrz.sys.startstopp.prozessvew.BetriebssystemProzess
public class BetriebssystemProzess
- extends java.lang.Object
Klasse stellt Methoden zur Verfügung die es ermöglichen zu Prüfen ob Applikationen
bereits auf diesem Rechner laufen bzw. diese auf Betriebssystemebene zu beenden.
Das Erkennen ob ein Prozess bereits läuft wird je nach Betriebssystem unterschiedlich
gehandhabt:
- UNIX/LINUX: es wird der Systembefehl ps -ef<\code> ausgeführt. Das Ergebnis
dieses Befehls wird dann interpetiert.
- Windows: unter Windows gibt es nicht unter allen Betriebssystemen einen Befehl um
die Prozessliste aufzulisten. Abhilfe schaffen da die "Ps Tools" von Micrososft, die
es ermögichen eine Prozessliste zu erstellen und Prozesse zu beenden.
(http://www.microsoft.com/germany/technet/sysinternals/utilities/PsTools.mspx)
Die Klasse erwartet, dass die Tools pslist.exe bzw. pskill.exe sich in einem Verzeichnis
befinden, dass über die path Variable des Betriebssystem erreichbar ist (Sinnvollerweise
C:\Windows\System32).
Unter Java auf Windows gibt es keine Möglichkeit die Pid eines von Java aus gestarteten
Prozesses zu bestimmen. Daher kommt hier folgendes Vorgehen zum Zuge:
1. bevor ein Prozess gestartet wird wird die aktuelle Prozessliste ausgelesen
(hierfür muss die Methode iniPidBestimmung() aufgerufen werden.
2. Der Prozess wird gestartet
3. es wird wieder die Prozessliste eingelesen und mit der ersten Prozessliste verglichen.
Der neu hinzugekommene Prozess muss der gestartet Prozess sein.
(hierfür muss die Methode bestimmePid() aufgerufen werden.
- Mac: Verfahren nicht installiert.
- Author:
- Dambach Werke GmbH
Field Summary |
protected static de.bsvrz.sys.funclib.debug.Debug |
m_debug
Debug-Logger. |
Method Summary |
void |
beendeProzess()
Methode beendet die Applikation auf Betriebsysremebene. |
void |
bestimmePid()
Methode bestimmt sofern vorher die Methode iniPidBestimmung() aufgerufen wurde die Pid eines
Prozesses auf einem Windowssystem. |
int |
getPid()
Methode liefert die Betriebssystem PID der Inkarnation zurück. |
void |
iniPidBestimmung()
Methode initialisiert auf Windowssystemen die Felder, die zur Bestimmung der Pid eines Prozesses benötigt
werden. |
boolean |
isGestartet()
Methode prüft ob eine Applikation bereits gestartet ist. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
m_debug
protected static final de.bsvrz.sys.funclib.debug.Debug m_debug
- Debug-Logger.
BetriebssystemProzess
public BetriebssystemProzess(ProzessDaten prozessDaten)
- Konstruktor der Klasse. In diesem Konstruktor wird festgestellt auf welcher
Betriebssystemplattform die Applikation gestartet wurde.
- Parameters:
prozessDaten
- Prozessdaten der Inkarnation
isGestartet
public boolean isGestartet()
- Methode prüft ob eine Applikation bereits gestartet ist. Es wird dabei nur geprüft,
ob eine Applikation läuft, die von einer StartStopp Applikation mit demselben
Inkarnationsnamen wie die jetzt laufende, gestartet wurde (siehe StartStoppApp).
Hierbei werden die Informationen die in den "Benutzereinstellungen in Windows-Registry oder
XML-Dokumenten" (siehe Klasse StartStoppPräferenz) gespeichert sind, ausgewertet.
- Returns:
- true: Applikation läuft schon, sonst false
getPid
public int getPid()
- Methode liefert die Betriebssystem PID der Inkarnation zurück. Unter Unix/Linux
wird hierzu der Befehl "ps -ef" ausgewertet, unter Windows das Ergebnis des letzten
Aufrufs der Methode "bestimmePid".
- Returns:
- > 0 Pid, sonst Fehler
beendeProzess
public void beendeProzess()
- Methode beendet die Applikation auf Betriebsysremebene. Je nach Betriebssystem werden dabei
folgende Systembefehle verwendet:
UNIX/Linux: sh kill -p PID
Windows: pskill PID
Mac: nicht realisiert
iniPidBestimmung
public void iniPidBestimmung()
- Methode initialisiert auf Windowssystemen die Felder, die zur Bestimmung der Pid eines Prozesses benötigt
werden. Unter Unix/Linux Systemen hat die Methode keine Funktionalität.
bestimmePid
public void bestimmePid()
- Methode bestimmt sofern vorher die Methode iniPidBestimmung() aufgerufen wurde die Pid eines
Prozesses auf einem Windowssystem. Unter Unix/Linux Systemen hat die Methode keine Funktionalität.
Wird die Methode aufgerufen ohne vorher die Methode iniPidBestimmung() aufgerufen zu haben,
wird eine IllegalArgumentException ausgelöst.
- Throws:
java.lang.IllegalArgumentException