Я пытаюсь выяснить, как получить дескриптор процесса из PID.
С http://www.linuxforums.org/forum/kernel/153873-getting-task_struct-process-using-its-pid.html, для ядра Linux 2.4
static inline struct task_struct *find_task_by_pid(int pid)
{
struct task_struct *p, **htable = &pidhash[pid_hashfn(pid)];
for(p = *htable; p && p->pid != pid; p = p->pidhash_next)
;
return p;
}
Ссылка, кажется, говорит, что pidhash[pid_hashfn(pid)]
является указателем на task_struct
объект, чей PID является значением pid
.
Но, похоже, это не так из книги «Понимание ядра Linux», в которой говорится о ядре Linux 2.6.11. Я не уверен, что соответствующий код одинаков в 2.6.11 и 2.4. Из книги я узнал, что pidhash[pid_hashfn(pid)]
имеет тип hlist_head
, который является указателем на объект hlist_node
. Объект hlist_node
является pids[0].pid_chain
объекта task_struct
. Тогда как я могу получить объект task_struct
из pidhash[pid_hashfn(pid)]
?
Обратите внимание, что
Спасибо.