Question
Expand the code in waitdemo1.c (shown below) so that the parent creates two children and then waits until both children exit. Expand your solution further
Expand the code in waitdemo1.c (shown below) so that the parent creates two children and then waits until both children exit. Expand your solution further so the program accepts an integer as a command-line argument. The program then creates the number of child processes and assigns each child a random number of seconds to sleep. Finally, the parent process reports as each child exits.
waitdemo1.c is: #include
#define DELAY 2
main() { int newpid; void child_code(), parent_code(); printf("before: mypid is %d ", getpid());
if ((newpid = fork()) == -1) perror("fork"); else if (newpid == 0) child_code(DELAY); else parent_code(newpid); }
void child_code(int delay) { printf("child %d here will sleep for %d seconds ", getpid(), delay); sleep(delay); printf("child done, about to exit "); exit(17); }
void parent_code(int childpid) { int wait_rv; wait_rv = wait(NULL); printf("done waiting for %d. Wait returned: %d ", childpid, wait_rv); }
OUTPUT for current code:
before: mypid is 3
child 4 here will sleep for 2 seconds
child done, about to exit
done waiting for 4. Wait returned: 4
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started