Puede usar tgkill (2) o tkill
en su programa C (necesitará usar syscall (2) ) pero no desea hacerlo . Desde el interior de su programa, puede usar pthread_kill (3) , que rara vez es útil.
(No sé exactamente qué efecto tendría tgkill
o tkill
, por ejemplo, con SIGKILL
o SIGTERM
- en un hilo)
La biblioteca pthreads (7) usa cosas de bajo nivel (incluyendo algunas señales (7) -s y futex (7) -s, etc ...; vea también nptl (7) ) y si mató sin procesar (con tkill
o tgkill
) alguna hilo individual, su proceso estaría en un estado incorrecto (entonces comportamiento indefinido ) porque se rompería algún invariante interno.
Así que estudie la documentación de su programa receptor de paquetes y encuentre otra forma. Si es software libre , estudie su código fuente y mejórelo.
Leer más atentamente señal (7) y la señal de seguridad (7) . Las señales deben enviarse a los procesos (por kill (2) ) y manejarse en subprocesos.
Y en la práctica, las señales y los hilos no se casan bien. Leer algunos tutorial de pthread .
Un truco común, al codificar un programa multiproceso (y querer manejar señales externas como SIGTERM
) es usar una tubería (7) a su propio proceso y sondear (2) esa tubería en algún otro hilo (también puede considerar el Linux signalfd específico (2) ), con un gestor de señal escribir (2) --inging un byte o algunos de ellos en esa tubería. Ese conocido truco está bien explicado en la documentación de Qt (y puede usarlo en su propio programa, incluso sin Qt).