PDA

Ver la Versión Completa : Obtener proceso bloqueado


kasper
11-03-2008, 12:28:36
Buenas llevo toda la mañana entera buscando información y no he encontrado nada. A ver si me podéis echar un cable.

Me gustaría poder saber cuando un proceso está bloqueado, o sea, cuando pone (no disponible), para poder matarlo e iniciarlo de nuevo.

Creo que se debería saber el estado del proceso, pero la verdad, no se como obtenerlo.

Muchas grácias de antemano, a ver si me ayudáis.

seoane
11-03-2008, 13:30:48
El estado "bloqueado" o "no disponible", no es un estado propio de un programa. El administrador de tareas marca un proceso de este modo cuando no responde a los mensajes que le manda en un tiempo razonable, así, por ejemplo, puede marcar como "no disponible" un proceso que este ejecutando alguna acción que le lleve mucho tiempo pero que no este bloqueado realmente.

Si el sistema, pudiera distinguir con un 100% de fiabilidad cuando un programa "se cuelga", simplemente lo mataría no lo marcaría y esperaría para que tu tomases la decisión.

¿Que es realmente lo que quieres conseguir? ¿Un programa que vaya matando otros procesos, sean cuales sean, cuando estos parezcan estar bloqueados, o por el contrario solo quieres controlar el comportamiento de un programa en concreto?

kasper
11-03-2008, 13:48:48
Buenas, quiero controlar una sola aplicación, la cual por un problema de red, cuando hay una desconexión se me queda "colgado" o "bloqueado", total, que no funciona.

Lo que me gustaría es conseguir saber que este programa se ha quedado en esta situación para poder matarlo y reiniciarlo.

Espero que me hayas entendido.

Saludos.

Espero respuesta señores, merci.

seoane
11-03-2008, 14:01:41
Pues entonces tendrás que buscar formas de determinar el estado de ese programa. Lo primero que se me ocurre es que compruebes el estado de la red, a partir de ahí las otras ideas que se me ocurren son mucho mas complejas, por ejemplo comprobar el bucle de mensajes.

Lo mejor es que busques en el comportamiento del propio programa signos de que se ha bloqueado, por ejemplo, si sabes que tiene que mostrar cierto mensaje, o crear o modificar cierto archivo, y no lo hace puede ser un signo de que se ha bloqueado.

Como ves no hay una respuesta sencilla a tu problema.

jachguate
11-03-2008, 14:40:30
Se me ocurre algo que no sería muy dificil de implementar:

Que el proceso "guardian" envíe un mensaje al proceso que se vigila, y espere el tiempo que te parezca razonable por una respuesta. Si no la recibe en ese tiempo, podrá asumir que el otro está bloqueado, matarlo e iniciarlo de nuevo. Para esto, podrías valerte de la propia mensajería de windows... así, resulta bastante sencillo de implementar.

Hasta luego.

;)