С task_structточки зрения, потоки процесса имеют одного и того же лидера группы потоков ( group_leaderintask_struct ), тогда как дочерние процессы имеют другого лидера группы потоков (каждый отдельный дочерний процесс).
Эта информация подвергается воздействию пользовательского пространства с помощью в /procфайловой системе. Вы можете отследить родителей и детей, посмотрев на ppidполе в /proc/${pid}/statили .../status(это дает родительский pid); Вы можете отслеживать потоки, посмотрев на tgidполе в .../status(это дает идентификатор группы потоков, который также является pid лидера группы). Потоки процесса становятся видимыми в /proc/${pid}/taskкаталоге: каждый поток получает свой собственный подкаталог. (У каждого процесса есть хотя бы один поток.)
На практике программы, желающие отслеживать свои собственные потоки, будут полагаться на API, предоставляемые библиотекой потоков, которую они используют, вместо использования информации, специфичной для ОС. Обычно в Unix-подобных системах это означает использование pthreads.