$ ps -e -T | grep myp | grep -v grep
797 797 ? 00:00:00 myp
797 798 ? 00:00:00 myp
797 799 ? 00:00:00 myp
797 800 ? 00:00:00 myp
Esto muestra el proceso myp
con PID = 797 y cuatro subprocesos con diferentes SPID.
¿Cómo puedo matar un hilo particular del proceso sin matar todo el proceso? Entiendo que podría no ser posible en algunos casos cuando hay dependencias fatales en ese hilo en particular. Pero, ¿es posible en cualquier caso? Es si, como?
Lo intenté kill 799
y el proceso en sí fue terminado. Ahora no estoy seguro de que esto se deba a que hubo dependencias que hicieron myp
fallar sin el proceso 800
o porque matar es simple y no puede matar procesos individuales.
fuente
La respuesta canónica a esta pregunta es: con la cooperación del proceso, por cualquier mecanismo que proporcione. Sin la cooperación del proceso, es imposible. Que el proceso consista en hilos es un detalle interno del proceso que, por diseño intencional, no está expuesto fuera del proceso.
fuente
gdb
) al proceso, ordenar a todos los subprocesos que descarguen la pila y luego desconectar.Además de la respuesta de @ gkv, puede echar un vistazo a la función
pthread_cancel(3)
, parte de<pthread.h>
. Desde la página del manual:fuente
Puede encontrar tgkill () útil. Es específico de Linux como se menciona en la página del manual.
fuente