Pregunta

Tengo un programa en C ++ Visual prueba de la consola dentro de la acumulación diaria. De vez en cuando la prueba llamaría alguna función que se ha cambiado por otros desarrolladores de forma inadecuada, descienden en un bucle infinito y cuelgan bloqueando así la construcción.

Necesito una solución de vigilancia lo más simple posible. Esto es lo que ocurrió. En el punto de entrada del programa de pruebas de empezar un hilo separado que se repite continuamente el tiempo transcurrido y los cheques. Si se supera un cierto período predefinido que llama TerminateProcess (). Pseudocódigo:

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

¿Es esta solución peor que un organismo de control implementado como un programa principal independiente?

¿Fue útil?

Solución

Creo que es preferible aplicar el organismo de control como un proceso separado. Es más fácil volver a utilizarlo, es más fácil de detectar si su aplicación se estrelló y para obtener su código de retorno.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top