以下是代码:
int main(int argc, char *argv[ ]){
int x = 33;
if(!fork()){
int x = 10;
printf("%d\n", x);
}
fork();
printf("%d\n", x);
return 0;
}
我假设因为int的值为原始子变量而改变,所以它携带的值为10,在第二个fork(fork();)中也是如此(fork();),所以原始子变量及其子变量打印10,因此输出如下所示:33 10 10 10 但是看起来,虽然int的值在if内部发生了变化,但子函数随后会返回x的原始值,即33,并且在第二个fork之后,两个函数都打印33(所以输出是这样的:33 33 10 33 33.为什么?(我认为\n与此无关)here is a photo of what i think is happening but apparently it doesnt