我有一个问题:
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?产品:>
答案 0 :(得分:1)
fork的不同侧的变量不共享。
fork复制变量。子进程退出时,其变量版本将丢失。
也许您想使用pthread_create()
?然后共享所有变量。
答案 1 :(得分:1)
将clone(2)
与CLONE_VM
中的flags
和有效child_stack
参数一起使用,而不是使用fork(2)
,以便子级与父级共享相同的内存空间