gpt4 book ai didi

计算一个进程拥有的 sibling 数量,Linux内核

转载 作者:太空宇宙 更新时间:2023-11-04 02:36:22 25 4
gpt4 key购买 nike

我正在使用 list_for_each 宏和 current task_structsibling 字段打印出current 拥有的 sibling 数量。

这是代码(inf.num_siblings 跟踪 sibling 的数量):

    struct list_head *curr_node;
....
list_for_each(curr_node, &(current->sibling)) {
inf.num_siblings++;
}
...
//print inf.num_siblings

current->sibling 指向循环链表中的一个节点,所以我认为上面的代码应该正确计算所述列表中兄弟/节点的数量。

这段代码似乎大部分都有效。如果我在后台运行一个程序,该程序在运行“count siblings”代码之前一直循环下去,那么与我运行循环代码。但是,如果我运行一个在开始循环之前调用一次 fork() 的进程,而不是像我预期的那样看到兄弟计数增加 2,它只会增加 1。这是为什么?

这是 fork 然后循环的代码:

#include <sys/types.h>
#include <unistd.h>

int main(int argc, char *argv[])
{
fork();

while(1){
sleep(3);
}

return 0;
}

最佳答案

当您调用 fork 时,您创建了一个 child 进程,而不是 sibling。当你 fork 时,你会增加 current->children 的数量,而不是 current->sibling 的数量:)

关于计算一个进程拥有的 sibling 数量,Linux内核,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36680315/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com