为什么我在前叉后得到0而不是1?

时间:2013-12-05 14:24:11

标签: c linux fork

我有一个程序可以将数字增加一个。

int ile=0;

pid_t pid = fork();

if(pid != 0) {
  ile++;
  printf("%d", ile);  //I get 1
} 
else {
  printf("%d", ile);  //I get 0  
}

为什么我得到0?我必须得到1。

1 个答案:

答案 0 :(得分:3)

fork ()使用自己的地址空间创建一个新进程。这些不是共享公共地址空间的线程。如果您希望后一种行为看起来像pthreads

ile++之后,父进程(您的案例中为fork())的更改将无法在子级中显示。