De uma perspectiva task_struct
, os threads de um processo têm o mesmo líder de grupo de threads ( group_leader
em task_struct
), enquanto os processos filhos têm um líder de grupo de threads diferente (cada processo filho individual).
Esta informação é exposta ao espaço do usuário via o sistema de arquivos /proc
. Você pode rastrear pais e filhos observando o campo ppid
em /proc/${pid}/stat
ou .../status
(isso dá ao pai pid); você pode rastrear segmentos observando o campo tgid
em .../status
(isso fornece o id do grupo de threads, que também é o pid do líder do grupo). Os encadeamentos de um processo são visíveis no diretório /proc/${pid}/task
: cada encadeamento recebe seu próprio subdiretório. (Todo processo tem pelo menos um thread.)
Na prática, os programas que desejam acompanhar seus próprios segmentos dependem das APIs fornecidas pela biblioteca de segmentação que estão usando, em vez de usar informações específicas do sistema operacional. Normalmente, em sistemas semelhantes ao Unix, isso significa usar pthreads.