Subprozess killen

22/09/2009 - 09:32 von Trudy Momo | Report spam
Guten Tag,

Ich habe wieder einmal ein kleines Problem. Habe auch ein bisschen im
Internet rumgeforscht, bin aber nicht auf die Lösung gekommen.

Ich habe ein Programm im Einsatz das ich gerne monitoren möchte. Konkret
möchte ich max. 4 Instanzen dieses Programmes laufen lassen. Sollte eine
fünfte dazukommen, soll meine VB-Applikation diese Fünfte killen.
Der Haken an der Sache ist, dass die Instanzen nur über seine Subprocesse zu
idenzifizieren sind.
Konkret: der Prozess ist ntvdm.exe und unten dran dann die app.exe
ntvdm.exe
app.exe
app.exe
app.exe

kann mir da jemand weiterhelfen?

Gruss Trudy
 

Lesen sie die antworten

#1 Kerem Gümrükcü
22/09/2009 - 10:20 | Warnen spam
Hallo Trudy,

Ich habe ein Programm im Einsatz das ich gerne monitoren möchte. Konkret
möchte ich max. 4 Instanzen dieses Programmes laufen lassen. Sollte eine
fünfte dazukommen, soll meine VB-Applikation diese Fünfte killen.



Es gibt unterschiedliche Ansàtze, wie man so was realisieren kann,
ich zàhle mal hier ein paar auf und Du kannst dann sagen, welche
dich eher anspricht und dann sehen wir mal weiter:

1. Du kannst in periodischen Abstànden, z.b. mit einem Timer
abfragen, wie viele Instanzen von deinem Program laufen.
Dazu kannst Du als Auswahlkriterium den Prozessnamen
nehmen, den Pfad zu der Exe Datei, Programmversionsinformationen,
etc,...diese Variante ist relativ einfach zu handhaben und mit
reinen .NET Bordmitteln zu lösen. Wird eine 5. Instanz von deinem
Program gestartet, dann wird diese von dem Kontrollapp terminiert,
oder sogar die app.exe die gestartet hat prüft on 5 Instanzen von
sich selber laufen und terminiert sich dann selber bevor es richtig
startet,...

2. Die Prozesse haben eine Methode der Interprozesskommunikation, d.h.
die benachrichtigen sich gegenseitig bzw. schreiben irgednwo im system
die Menge der laufenden Prozesse auf, z.b. Datei,
SharedMemory,Fensternachrichten,
Sockets, etc. pp. aber das ist an sich auch vergleichbar mit Variante 1. da
Du ja im System
schon abfragen kannst, wie viele einer bestimmten instanz laufen...daher
eine möglichkeit,
wenn die prozesse sich gegenseitig mit irgendwas benachrichtigen müssen,...

Der Haken an der Sache ist, dass die Instanzen nur über seine Subprocesse
zu idenzifizieren sind.



Das ist kein Haken, streng genommen, gibt es in Windows so was wie
Client und Server Prozesse nicht, sondern nur Prozesse, aber das ist
ein anderes Thema und eher im Bereich Kernel und Systemdesign
angesiedelt,...

3. Wenn du aber willst, das z.b. ntvdm.exe nur 4 "Clients" als Subprozesse
hat, dann kannst Du mit der Tool Help Library un deren Funktionen ermitteln
wie viele Prozesse aus der ntvdem.exe heraus gestartet wurden und dann nach
dem Vorschlag 1. verfahren, d.h. z.b. diese überprüfung ausführen bevor das
eigentliche program staret und es dann beenden, oder aus einer Kontrollapp
periodisch prüfen ob bereits was làuft und wieviel davon,...

Konkret: der Prozess ist ntvdm.exe und unten dran dann die app.exe
ntvdm.exe
app.exe
app.exe
app.exe

kann mir da jemand weiterhelfen?



Das ist kein Problem, siehe oben!

Grüße

Kerem

Beste Grüsse / Best regards / Votre bien devoue
Kerem Gümrükcü
Latest Project: http://www.pro-it-education.de/soft...iceremover
Latest Open-Source Projects: http://entwicklung.junetz.de
"This reply is provided as is, without warranty express or implied."

Ähnliche fragen