Список всех потоков в текущем процессе?
Я пытаюсь реализовать системный вызов, который позволяет мне получить количество потоков для текущего процесса. Я новичок в ядре Linux, и поэтому мое понимание этого ограничено.
В настоящее время я пытаюсь перебрать всеtask_struct
s, и сравните PID лидера их группы потоков с текущим 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
является общим для всех потоков в одном процессе?