Organismo de control integrado en el mismo proceso que el programa que controla
-
21-09-2019 - |
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?
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.