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