fork()和共享变量

时间:2014-03-22 22:24:04

标签: linux fork

我有一个问题:

int main(){
   int myVariable1 = 0;
   int myVariable2 = 0;
   pid_t t1 = fork();
   pid_t t2;
   if(t1 == 0){
       t2 = fork();
       if(t2 == 0) { myVariable1++; exit(1); }
       else if(t2 > 0) { myVariable2++; exit(1); }

       wait(0);
       wait(0);

      printf("myVariable1 = %d, myVariable2 =%d \n", myVariable1, myVariable2);

   }

现在输入:

myVariable1 = 0, myVariable2 = 0;

我怎样才能得到这个值:1和1?产品:>

2 个答案:

答案 0 :(得分:1)

fork的不同侧的变量共享。

fork复制变量。子进程退出时,其变量版本将丢失。

也许您想使用pthread_create()?然后共享所有变量。

答案 1 :(得分:1)

clone(2)CLONE_VM中的flags和有效child_stack参数一起使用,而不是使用fork(2),以便子级与父级共享相同的内存空间