我在理解以下简单的C代码时遇到了一些麻烦:
int main(int argc, char *argv[]) {
int n=0;
fork();
n++;
printf("hello: %d\n", n);
}
Run Code Online (Sandbox Code Playgroud)
我目前对a的理解fork是,从该代码行开始,它将把剩下的代码分成2,它将并行运行,直到"没有更多代码"执行.
从那个棱镜,fork之后的代码将是:
一个)
n++; //sets n = 1
printf("hello: %d\n", n); //prints "hello: 1"
Run Code Online (Sandbox Code Playgroud)
b)
n++; //sets n = 2
printf("hello: %d\n", n); //prints "hello: 2"
Run Code Online (Sandbox Code Playgroud)
然而,会发生的是两个印刷品
hello: 1
Run Code Online (Sandbox Code Playgroud)
这是为什么?
编辑:只是现在它发现,与线程相反,进程不共享相同的内存.是对的吗?如果是,那就是原因.