1. Weiterleitung zu NetzLiving.de
  2. Forum
    1. Unerledigte Themen
  3. zum neuen Forum
  • Anmelden
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Seiten
  • Forum
  • Erweiterte Suche
  1. Informatik Forum
  2. Webmaster & Internet
  3. Entwicklung

error abfangen

  • nikolasu
  • 17. Juli 2006 um 16:58
  • Unerledigt
Hallo zusammen,

das Informatik-Forum geht in den Archivmodus, genaue Informationen kann man der entsprechenden Ankündigung entnehmen. Als Dankeschön für die Treue bekommt man von uns einen Gutscheincode (informatikforum30) womit man bei netzliving.de 30% auf das erste Jahr sparen kann. (Genaue Infos sind ebenfalls in der Ankündigung)

Vielen Dank für die Treue und das Verständnis!
  • nikolasu
    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
    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
    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
    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
    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
    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
    Punkte
    8.486
    Beiträge
    1.649
    • 19. Juli 2006 um 09:04
    • #7

    Gar nicht, wollte es nur in die Diskussion einflechten ;)

  • mdk
    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
    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.

  1. Datenschutzerklärung
  2. Impressum