Prpzesse überwachen

redneb

Mitglied
Hallo, ich habe folgendes Problem.

Ich möchte 2 Konsolenprogramme starten und überwachen ob eine der zwei Anwendungen sich im laufe der Zeit aufgehängt hat.

Sollte sich ein Prozess aufhängen, möchte ich diesen schließen und neustarten.


Gruß
Manuel
 
Also zuerst wäre es natürlich interessant zu wissen, auf welchem System das passieren soll.

Unabhängig davon könnte das ziemlich problematisch sein. Wenn ein Programm 'hängenbleibt', dann heißt das ja meistens, daß es in irgendeier Endlosschleife festhängt. Im Programm tut sich aber etwas, nämlich die Schleife. Woher soll nun ein anderes Programm wissen, ob das, was im überwachten Programm passiert, das richtige ist.
Bei Windows-Fensteranwendungen läuft das Programm z.B. die ganze Laufzeit über in der Nachrichtenverarbeitungsschleife. Das könnte von außen aussehen, wie ein festhängen in einer Endlosschleife, ist aber so gewollt

Eigentlich kann eine solche Überwachung m.E. nur auf 2 Arten stattfinden:
1. Anhand der Produkte eines Programms. Wenn das Programm z.B. eine Logdatei erzeugt, dann kann man überprüfen, wie lange sich die Logdatei nicht mehr geändert hat.
2. Anhand einer Art 'Watchdog'. Der muß aber im Programm implementiert sein. Entweder mit einem internen Zähler, der von außen zugreifbar ist oder indem das Programm zyklisch eine Nachricht nach außen sendet (z.B. unter Windows per SendMessage an HWND_BROADCAST oder systemunabhängig eine Netzwerknachricht an 255.255.255.255). Bleibt die Nachricht für eine gewisse Zeit aus (oder der Inhalt verändert sich nicht), hängt das Programm.

Das Alles erhebt natürlich keinen Anspruch auf Vollständigkeit. Wenn jemand noch einen anderen Weg kennt, lasse ich mich auch gerne belehren.

P.S.: Eine philosophische Frage: Was machst Du, wenn das Überwachungsprogramm hängt oder "Wer überwacht die Überwacher?" ;-)
 
Ich bekomms nicht gebacken eine minimale Konsolenanwendung zu schreiben, die mir nur ein "Keine Rückmeldung" im Taskmanager produziert...

Kann mir mal bitte einer mir nem kleinen Codeschnipsel weiterhelfen?
Das mir jetzt schon n bissel peinlich.
 
Zurück