• 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

  • 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

  • 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!