$ 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
To pokazuje proces myp
z PID = 797 i czterema wątkami o różnych SPID.
Jak mogę zabić konkretny wątek procesu bez zabijania całego procesu. Rozumiem, że w niektórych przypadkach może nie być to możliwe, gdy istnieją fatalne zależności od tego konkretnego wątku. Ale czy w każdym razie jest to możliwe? Czy tak, jak?
Próbowałem kill 799
i sam proces został zakończony. Teraz nie jestem pewien, czy było tak dlatego, że istniały zależności, które myp
zawiodły bez procesu 800
lub ponieważ zabicie jest po prostu niemożliwe do zabicia poszczególnych procesów.
źródło
Kanoniczna odpowiedź na to pytanie brzmi: przy współpracy procesu, niezależnie od mechanizmu, jaki zapewnia. Bez współpracy procesu jest to niemożliwe. To, że proces składa się z wątków, jest wewnętrznym szczegółem procesu, który zgodnie z zamierzonym projektem nie jest odsłonięty poza procesem.
źródło
gdb
) do procesu, nakazać wszystkim wątkom zrzucić stos, a następnie odłączyć.Oprócz odpowiedzi @ gkv możesz spojrzeć na funkcję
pthread_cancel(3)
, część<pthread.h>
. Ze strony podręcznika:źródło
Może się przydać tgkill () . Jest specyficzny dla Linuksa, jak wspomina strona man.
źródło