No estoy familiarizado con cómo se matan los procesos en Windows. En Linux, una muerte "en caliente" envía una señal (15) que el proceso puede manejar al instanciar un controlador de señal. Una señal de muerte fría es (9) que el sistema operativo maneja al matar el proceso con fuerza.
¿Cómo puedo "matar" un proceso en Windows? ¿Cómo lo maneja el sistema operativo y el proceso? ¿Qué acciones realiza el sistema operativo? ¿Hay una forma multiplataforma de responder a una solicitud de matar / cerrar?
SIGTERM
, 9 esSIGKILL
.Respuestas:
"Finalizar tarea" (y
taskkill
) parece publicar unWM_CLOSE
mensaje en las ventanas del programa. (Lo mismo se hace cuando hace clic en el botón ×"Cerrar"). Si el programa no sale en algún momento, se le indica al usuario que finalice el programa de manera forzada."Proceso de eliminación" y
taskkill /f
usoTerminateProcess()
.fuente
ntsd -p <pid> -c q
, que usa elntsd
depurador; No estoy seguro de qué sucede cuando un programa se mata de esa manera. ( golpes @Chris )taskkill
y responde con: "Este proceso solo puede finalizar de forma forzada (con la opción / F)". Entonces, sí, la única opción que queda esTerminateProcess()
.Sysinternals (ahora parte de Microsoft) ofrece una utilidad llamada pskill que se puede usar desde la línea de comandos para eliminar procesos en el sistema local o en sistemas remotos.
La forma habitual de eliminar procesos en Windows en un entorno GUI es utilizar el Administrador de tareas.
fuente
¡Con Cygwin puedes usar una matanza multiplataforma!
fuente