Dar muerte a hilos con Ctrl+C

Dar muerte a hilos con Ctrl+C

de Federico Jaime Frade Monzon -
Número de respuestas: 6

Buenas, un problema que estamos teniendo es que para realizar algunas pruebas, finalizamos al cliente con CTRL+C y esto nos deja colgada la terminal, es decir no podemos ingresar mas comandos.

Esto segun investigamos es porque hay hilos que quedan "vivos", y la solucion pasa por "atrapar" el keyboard interrupt y asegurarnos de matar estos hilos, el tema es que esto es mas bien un problema de sistemas operativos. Que tan grave se considera este problema?, lo pregunto porque los profesores de mi monitoreo dijeron que una de las maneras en que iban a probar era esta.

En respuesta a Federico Jaime Frade Monzon

Re: Dar muerte a hilos con Ctrl+C

de Lia Colombo Scaramelli -

Hola, están usando python? 

Nosotros lo resolvemos con un evento, que cada  hilo reconoce y así termine su ejecución, después en el main con la excepción correspondiente hacerles join a todos y terminar el programa. 

Espero sea de ayuda, nos llevo un buen rato.. Saludos. 

En respuesta a Federico Jaime Frade Monzon

Re: Dar muerte a hilos con Ctrl+C

de Lia Colombo Scaramelli -

Otra cosa que te puede estar pasando es que el hilo no termine porque queda en una llamada bloqueante en algún socket.. 

En respuesta a Federico Jaime Frade Monzon

Re: Dar muerte a hilos con Ctrl+C

de Jorge Visca -

Una aplicación correcta al terminar debe liberar los recursos que utiliza. En particular los sockets tienen que ser cerrados. El servidor debería comportarse correctamente ante la desaparición de un cliente (son cosas que pasan), pero eso no debería ser asumido como la forma normal de trabajar.

No es un defecto catastrófico, pero sí un defecto.

En respuesta a Federico Jaime Frade Monzon

Re: Dar muerte a hilos con Ctrl+C

de Nestor Valentin Etcheverry Olivieri -

Para finalizar el programa (en Python) nosotros usamos

os._exit(1)

Eso hace que el sistema operativo mate al proceso y todos sus hilos, también libera todos los recursos que haya tomado (incluidos los sockets).