Список всех потоков в текущем процессе?
Я пытаюсь реализовать системный вызов, который позволяет мне получить количество потоков для текущего процесса. Я новичок в ядре Linux, и поэтому мое понимание этого ограничено.
В настоящее время я пытаюсь перебрать всеtask_struct
s, и сравните их лидера группы темs PID с текущим лидером группы потоков 's PID:
// ...
int nthreads = 0;
struct task_struct *task_it;
for_each_process(task_it) {
if (task_it->group_leader->pid == current->group_leader->pid) {
nthreads++;
}
}
// ...
Тем не менее, это некажется, работает (быстрый тест порождает некоторые pthreads по-прежнему дает1
, Что насчетgroup_leader
является общим для всех потоков в одном процессе?