Suppose that we have Parent.c as follows. It is compiled and linked to generate Parent executable. L1: #include L2: #define NULL 0 L3: int main (void) L4: { L5: if (fork() == 0){ L6: //execve("Child",NULL,NULL); L7: printf("I am child process with PID: %d\n", getpid()); L8: // exit(0); L9: } else { L10: printf("Process[%d]: in execution ...\n", getppid()); L11: sleep(5); L12: if(wait(NULL) > 0) L13: printf("Process[%d]: \n", getpid()); L14: printf("Process[%d]: ...\n", getppid()); L15: } L16: printf("HHHH:%d\n", getpid()); L17: } L1 denotes Line 1, L2 denotes L2, etc. If we run the Parent program: a: How many times will L16 execute? That is, how many lines of “HHHH” will be printed? Please briefly explain. b: What information will Line 13 print out? c: Which process P is the parent for the Parent process? In the above code, which lines will print out the process ID for process P?
Suppose that we have Parent.c as follows. It is compiled and linked to generate Parent executable.
L1: #include <sys/wait.h>
L2: #define NULL 0
L3: int main (void)
L4: {
L5: if (fork() == 0){
L6: //execve("Child",NULL,NULL);
L7: printf("I am child process with PID: %d\n", getpid());
L8: // exit(0);
L9: } else {
L10: printf("Process[%d]: in execution ...\n", getppid());
L11: sleep(5);
L12: if(wait(NULL) > 0)
L13: printf("Process[%d]: \n", getpid());
L14: printf("Process[%d]: ...\n", getppid());
L15: }
L16: printf("HHHH:%d\n", getpid());
L17: }
L1 denotes Line 1, L2 denotes L2, etc. If we run the Parent program:
a: How many times will L16 execute? That is, how many lines of “HHHH” will be printed? Please briefly explain.
b: What information will Line 13 print out?
c: Which process P is the parent for the Parent process? In the above code, which lines will print out the process ID for process P?
Step by step
Solved in 5 steps