Wymień wszystkie wątki w bieżącym procesie?
Próbuję zaimplementować wywołanie systemowe, które pozwala mi uzyskać liczbę wątków dla bieżącego procesu. Jestem nowym użytkownikiem jądra Linuksa, więc moje rozumienie go jest ograniczone.
Obecnie próbuję przeglądać wszystkietask_struct
s, i porównaj PID lidera grupy wątków z PID obecnego lidera grupy wątków:
// ...
int nthreads = 0;
struct task_struct *task_it;
for_each_process(task_it) {
if (task_it->group_leader->pid == current->group_leader->pid) {
nthreads++;
}
}
// ...
Jednak wydaje się, że to nie działa (szybki test, który pojawia się w niektórych pthreads1
. A co zgroup_leader
jest wspólny dla wszystkich wątków w tym samym procesie?