Frage

Ich betreibe ein Visual C ++ Konsole Testprogramm innerhalb des täglichen Build. Hin und wieder würde der Test eine Funktion aufrufen, die von anderen Entwicklern nicht ordnungsgemäß geändert wurde, steigen in eine Endlosschleife und hängen somit den Build zu blockieren.

Ich brauche eine Watchdog-Lösung so einfach wie möglich. Hier ist, was ich kam mit. Im Testprogramm Einstiegspunkt beginne ich einen separaten Thread, continuosly Schleifen und überprüft die verstrichene Zeit. Wenn einige vordefinierte Zeitraum überschritten wird, ruft sie TerminateProcess (). Pseudo-Code:

DWORD WatchDog( LPVOID)
{
     DWORD start = GetTickCount();
     while( true ) {
        Sleep( ReasonablePeriod );
        if( GetTickCount() - start > MaxAllowed ) {
            TerminateProcess( GetCurrentProcess(), 0 );
        }
     }
     return 0;
}

Ist diese Lösung noch schlimmer als ein Watchdog als separates Master-Programm implementiert?

War es hilfreich?

Lösung

Ich denke, es ist besser, den Watchdog als separater Prozess zu implementieren. Es ist einfacher, wieder verwendet, ist es einfacher, zu erkennen, ob Ihre App abgestürzt und seinen Return-Code zu erhalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top