hi
habe eine Frage ist es in möglich wenn eine exe datei nicht ausführbar ist oder während der Laufzet ein Fehler eintritt, das mit einer anderen exe zu erkennen und gegebenfalls die exe neu startet?
und wie macht man das?
hab schon danach gegooglet aber hab glaub ich nicht die richtigen suchwörter gefunden
mf nikolasu
error abfangen
-
-
das einzige, was mir jetzt so ad hoc einfallen würde, wäre die zweite exe einfach immer überprüfen lassen, ob das window der ersten exe noch existiert, und wenn nicht, neustartet.
-
Auch keine konkrete Lösung, nur eine Idee: Das Programm A führt das Programm B synchron aus (A wird also angehalten, solange B läuft). Wenn das B terminiert, läuft A weiter und prüft den Exitcode von B, welches im Falle eines Programmabbruchs einen anderen Exitcode liefert als bei ordentlicher Terminierung. Bei Erkennen des Exitcodes eines Programmabbruchs wird B von A erneut synchron gestartet, ...
Allerdings hab ich keine Ahnung, wie man das unter Windows umsetzt.
EDIT: mdk: Deine Lösung ist zwar auch grundsätzlich möglich, bedeutet aber "Busy Waiting", was im Allgemeinen unnötig CPU-Zeit verbrät.
-
Zitat
Das Programm A führt das Programm B synchron aus (A wird also angehalten, solange B läuft). Wenn das B terminiert, läuft A weiter und prüft den Exitcode von B, welches im Falle eines Programmabbruchs einen anderen Exitcode liefert als bei ordentlicher Terminierung. Bei Erkennen des Exitcodes eines Programmabbruchs wird B von A erneut synchron gestartet, ...
hmmm ja an sowas in die richtung hab ich auch schon gedacht aber wie stell ich jetzt fest ob das pogramm noch ausgeführt wird oder bereits einen fehler verursacht hat? -
Das erinnert mich an die alte Geschichte von den Robin Hood- und Friar Tuck-Programmen:
http://involution.com/friartuck.txt
Code
Alles anzeigenNaturally, the operator called in the operating-system developers. They found the bandit ghost jobs running, and X'ed them... and were once again surprised. When Robin Hood was X'ed, the following sequence of events took place: !X id1 id1: Friar Tuck... I am under attack! Pray save me! id1: Off (aborted) id2: Fear not, friend Robin! I shall rout the Sheriff of Nottingham's men! id1: Thank you, my good fellow! Each ghost-job would detect the fact that the other had been killed, and would start a new copy of the recently slain program within a few milliseconds. The only way to kill both ghosts was to kill them simultaneously (very difficult) or to deliberately crash the system.
-
hmmm versteh ich jetzt niht ganz wie mir das bei meinem Problem weiterhilft
-
Gar nicht, wollte es nur in die Diskussion einflechten
-
Zitat von nikolasu
hmmm ja an sowas in die richtung hab ich auch schon gedacht aber wie stell ich jetzt fest ob das pogramm noch ausgeführt wird oder bereits einen fehler verursacht hat?
wenn ein programm unter windows offen ist, erzeugt es ein neues window. du kannst einfach überprüfen, ob das window des ersten programms existiert, wenn nicht, ist das programm abgestürzt und kann neugestartet werden.
-
Wenn du das zu ueberwachende Programm gleich mit dem Programm startest, koenntest du in etwa sowas machen:
C#include <cstdlib> #include <cstdio> int main() { int ret; while ((ret = system("notepad.exe")) != 0) ; return 0; }
Nur funkt das wieder nicht, wenn das Programm bereits offen ist und das Starten einer zweiten Instanz nur das bereits gestartete Programm zum Vorschein bringt. Und zweitens, wer sagt das ein Programm 0 beim normalen Beenden zurueck gibt.
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!