De uma task_structperspectiva, os encadeamentos de um processo têm o mesmo líder do grupo de encadeamentos ( group_leaderintask_struct ), enquanto os processos filhos têm um líder de grupo de encadeamentos diferentes (cada processo filho individual).
Essas informações são expostas ao espaço do usuário por meio do /procsistema de arquivos. Você pode rastrear pais e filhos olhando para o ppidcampo em /proc/${pid}/statou .../status(isso fornece aos pais o pid); você pode rastrear threads observando o tgidcampo .../status(isso fornece o ID do grupo de threads, que também é o pid do líder do grupo). Os threads de um processo são visíveis no /proc/${pid}/taskdiretório: cada thread recebe seu próprio subdiretório. (Todo processo tem pelo menos um encadeamento.)
Na prática, os programas que desejam acompanhar seus próprios threads dependeriam das APIs fornecidas pela biblioteca de threading que estão usando, em vez de usar informações específicas do sistema operacional. Normalmente em sistemas tipo Unix, isso significa usar pthreads.