1. Dashboard
  2. Forum
    1. Unerledigte Themen
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team-Mitglieder
    4. Trophäen
    5. Mitgliedersuche
  4. Tutorial Bereich
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Lexikon
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

error abfangen

  • nikolasu
  • 17. Juli 2006 um 16:58
  • Unerledigt
  • nikolasu
    3
    nikolasu
    Mitglied
    Punkte
    95
    Beiträge
    12
    • 17. Juli 2006 um 16:58
    • #1

    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

  • mdk
    26
    mdk
    Emeritus
    Reaktionen
    130
    Punkte
    7.120
    Beiträge
    1.390
    • 17. Juli 2006 um 18:15
    • #2

    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.

  • Paulchen
    1
    Paulchen
    Gast
    • 17. Juli 2006 um 18:24
    • #3

    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.

  • nikolasu
    3
    nikolasu
    Mitglied
    Punkte
    95
    Beiträge
    12
    • 18. Juli 2006 um 08:09
    • #4
    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?

  • Jensi
    28
    Jensi
    Mitglied
    Reaktionen
    141
    Punkte
    8.486
    Beiträge
    1.649
    • 18. Juli 2006 um 12:07
    • #5

    Das erinnert mich an die alte Geschichte von den Robin Hood- und Friar Tuck-Programmen:

    http://involution.com/friartuck.txt

    Code
    Naturally, 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.
    Alles anzeigen
  • nikolasu
    3
    nikolasu
    Mitglied
    Punkte
    95
    Beiträge
    12
    • 19. Juli 2006 um 07:37
    • #6

    hmmm versteh ich jetzt niht ganz wie mir das bei meinem Problem weiterhilft

  • Jensi
    28
    Jensi
    Mitglied
    Reaktionen
    141
    Punkte
    8.486
    Beiträge
    1.649
    • 19. Juli 2006 um 09:04
    • #7

    Gar nicht, wollte es nur in die Diskussion einflechten :winking_face:

  • mdk
    26
    mdk
    Emeritus
    Reaktionen
    130
    Punkte
    7.120
    Beiträge
    1.390
    • 19. Juli 2006 um 09:22
    • #8
    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.

  • kubuntu
    6
    kubuntu
    Mitglied
    Reaktionen
    2
    Punkte
    352
    Beiträge
    65
    • 19. Juli 2006 um 12:06
    • #9

    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.


  • Maximilian Rupp 27. Dezember 2024 um 12:05

    Hat das Thema aus dem Forum Programmieren nach Entwicklung verschoben.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!

Benutzerkonto erstellen Anmelden

Benutzer online in diesem Thema

  • 1 Besucher

Rechtliches

Impressum

Datenschutzerklärung