Question: //thread.c v2 #include #include #include #define _SCHED_H 1 #define __USE_GNU 1 #include #define STACK_SIZE 4096 int var1 = 0;//global variable int var2 = 0;//global variable

//thread.c v2

#include

#include

#include

#define _SCHED_H 1

#define __USE_GNU 1

#include

#define STACK_SIZE 4096

int var1 = 0;//global variable

int var2 = 0;//global variable

int thread_behavior(void *arg) {

printf("\t\tThread: Inside thread_behavior, my pid: %d ", getpid());

var2++;

printf("\t\tThread: var2 = %d ", var2);

sleep(1);//sleep 1 second

printf("\t\tThread: Terminating thread_behavior... ");

return 0;

}

int child_behavior() {

int state;

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

var1++;

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

//reserve some space for the thread's stack

//no need to reserve space for data or code,

// since thread will share its creator's data and code section

void *thread_stack = malloc(STACK_SIZE);

int thread_pid;

printf("Child: Creating new thread and waiting... ");

//clone system call

thread_pid = clone(&thread_behavior, thread_stack + STACK_SIZE, CLONE_SIGHAND | CLONE_FS |CLONE_VM | CLONE_FILES | CLONE_THREAD, NULL);

sleep(1);//sleep 1 second

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

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... ");

//clone 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 var2.

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!