【问题标题】:List of Children - Sched.h - Kernel子级列表 - Sched.h - 内核
【发布时间】:2012-12-19 12:44:36
【问题描述】:

在哪里可以找到“struct list_head children; /* list of my children */”的定义,它在 sched.h 中用于保留进程的子进程?
我需要访问 task_struct一个特定的孩子,但我不知道如何获得指向它的指针,而且我不知道孩子列表的字段是什么......
谢谢我提前。

【问题讨论】:

  • 我们将此作为练习留给读者,这是破解内核的乐趣之一。
  • 好的,感谢您的回答。对此有任何提示吗?对于当前进程及其父进程,我知道如何找到 task_struct,但我不知道如何为其子进程访问任务结构及其兄弟姐妹。我不知道,因为它们存储在一个列表中,我什至不知道它包含什么。谢谢。
  • 如果你查看include/linux,list_head 的定义位置将非常明显:)
  • 好的。我想我刚刚找到它,位于 list.h 中。它被定义为双向链表,并包含两个指针 next 和 prev。但这对我没有帮助,因为有了这些指针我可以遍历该列表,但我找不到访问其 task_struct 的方法。对此有任何建议吗?再次感谢。;)

标签: kernel children


【解决方案1】:

我想我通过网络上的一些研究找到了解决方案。我将它发布给任何对此感兴趣的人。

struct task_struct *task;
struct list_head *list;

list_for_each(list, &current->children) {
task = list_entry(list, struct task_struct, children); /* 任务现在指向当前的一个孩子 */
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多