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 #include #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

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!