您好我正在尝试创建一个计数器,它只计算在Linux内核源代码中fork.c中调用系统调用vfork()的次数。我正在关注total_forks的实现方式。 Total_forks在sched.h中定义。但我无法找到它被初始化为零的地方。
答案 0 :(得分:4)
我猜你在谈论Linux内核,而sched.h
和定义 here中的变量已声明。它是一个全局变量(在文件范围定义而不是static
) - 这些变量被隐式初始化为零。在你自己的代码中试试这个:
#include <stdio.h>
int var;
int main( int argc, char* argv[] ) {
printf( "var is %d\n", var );
return 0;
}
答案 1 :(得分:0)
我不熟悉你所看到的来源,但我想起了一些想法:
启动init
时,它可能会初始化为1。
它可能被初始化为0,因为它位于BSS段;运行时系统知道为变量初始化一部分内存并在早期启动时将其全部清除到“主”内核进程。