Question: //thread.c #include #include #include int var1 = 0; //global variable int child_behavior() { printf(Child: Inside child_behavior, my pid: %d , getpid()); var1++; printf(Child: var1 =

//thread.c

#include

#include

#include

int var1 = 0; //global variable

int child_behavior() {

printf("Child: Inside child_behavior, my pid: %d ", getpid());

var1++;

printf("Child: var1 = %d ", var1);

sleep(2);//sleep 1 second

printf("Child: Terminating child_behavior... ");

return 0;

}

int main() {

int state;

int child_pid;

printf("\tParent: my pid: %d ", getpid());

printf("\tParent: Creating new child and waiting... ");

//fork system call

child_pid = fork(); //duplicate

if( child_pid == 0 ){

//child: The return of fork() is zero

child_behavior();

} else {

wait(&state);//wait for the child to terminate

printf("\tParent: Done waiting! Child pid: %d ", child_pid);

printf("\tParent: var1 = %d ", var1);

}

return 0;

}

What is the output of this program? Explain the value(s) obtained for var1.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!