问题描述
"在进程的哪些逻辑段 变量 f 和 c 是否存在?"
int c = 5;
void main(int argc,char **argv)
{
int f = fork();
if(f == 0)
{
c += 5;
}
else
{
f = fork();
c += 10;
if(f)
{
c += 5;
}
}
}
大家好,我有点困在这个问题上,我猜 c 是一个全局变量并且在数据区域中,而 f 在堆栈中(因为 main 是一个过程调用),但我不清楚关于逻辑段的含义。我非常感谢专家的眼光来查看这个问题并告诉我我错过了什么。提前致谢。
解决方法
初始 c
变量仅存在于主进程中(在 f == 0
分支中)。每次 fork 时,它都会被克隆,但每个进程都有自己的 c
变量副本。
看到这个答案https://stackoverflow.com/a/4299626/3035795
而且全局变量像你说的那样存储在数据段中,所以答案是c
存在于数据段中,f
存在于堆栈段中。