Você pode usar o tgkill (2) ou tkill
no seu programa C (precisará usar o syscall (2) ), mas não deseja . De dentro do seu programa, você pode usar pthread_kill (3) - o que raramente é útil.
(Não sei exatamente qual efeito teria tgkill
ou tkill
- por exemplo, com SIGKILL
ou SIGTERM
- em um thread)
Os pthreads (7) coisas usos de baixo nível biblioteca (incluindo alguns sinais (7) -s e futex (7) -s etc ...; ver também nptl (7) ) e se você raw-morto (com tkill
ou tgkill
) alguns thread individual, seu processo estaria em um estado errado ( comportamento indefinido ), porque algumas invariáveis internas seriam interrompidas.
Portanto, estude a documentação do seu programa receptor de pacotes e encontre outra maneira. Se for um software livre , estude seu código-fonte e melhore-o.
Leia com mais atenção o sinal (7) e o sinal de segurança (7) . Os sinais devem ser enviados para processos (por kill (2) ) e manipulados em threads.
E, na prática, sinais e linhas não se casam bem. Leia o tutorial pthread .
Um truque comum, ao codificar um programa multiencadeado (e querer lidar com sinais externos como SIGTERM
) é usar um canal (7) em seu próprio processo e pesquisar (2) esse canal em outro segmento (você também pode considerar o Linux específica signalfd (2) ), com um destro do sinal de escrita (2) ing um byte ou alguns deles naquele tubo. Esse truque conhecido é bem explicado na documentação do Qt (e você pode usá-lo em seu próprio programa, mesmo sem o Qt).