Question

Je lance un programme de test de la console Visual C ++ dans la construction quotidienne. De temps le test appellerait une fonction qui a été modifié par d'autres développeurs de manière incorrecte, descendent dans une boucle infinie et suspendez bloquant ainsi la construction.

Je besoin d'une solution de chien de garde aussi simple que possible. Voici ce que je suis venu avec. Dans le point d'entrée du programme de test je commence un thread séparé qui boucle et continuosly vérifie le temps écoulé. Si une période prédéfinie est dépassée, il appelle TerminateProcess (). Pseudocode:

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

Cette solution est pire qu'un chien de garde mis en œuvre en tant que programme maître séparé?

Était-ce utile?

La solution

Je pense qu'il est préférable de mettre en œuvre le chien de garde comme un processus distinct. Il est plus facile de le réutiliser, il est plus facile de détecter si votre application est écrasé et pour obtenir son code de retour.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top