I’ve a problem with this little program:
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.