I’ve a problem with this little program:
JavaScript
x
int main() {
pid_t process;
int count= 0;
switch(process= fork()) {
case -1:
printf("Fork error!nn");
exit(1);
break;
case 0: //child
printf("Process CHILD: PID= %d, Value= %d n", getpid(), process);
printf("Coounter NOT increased: %dn", count);
printf("Increase counter...n");
sleep(2);
count= count + 2;
printf("Counter increased: %dnn", count);
exit(0);
break;
default: //parent
wait(0);
printf("Process PARENT: PID= %d, Value= %dn", getpid(), process);
printf("Counter value: %dnn", count);
break;
}
return 0;
}
I increase the counter in the child but in the parent the counter not increase… why?
Thank you everyone
Advertisement
Answer
That’s because after fork
, parent process and child process are different processes, and they each have their own copy of the variable count
.