Expand the code so that the parent creates two children and then waits until both children and then waits until both children
exit.
Note: The code might have something to do in UNIX.
Expand your solution further so the program accepts an integer as a command line argument. The program then creates that number of child processes and assigns each child a ranodm number of seconds to sleep. Finally, the parent processes report as each child
exits.
- #include <stdio.h>
-
#define DELAY 2
-
-
main ()
-
{
-
int newpid;
-
void child_code(), parent_code();
-
printf("before: mypid is %d\n", 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\n", getpid(),
-
delay);
-
sleep(delay);
-
printf("child done. about to exit\n");
-
exit(17);
-
}
-
void parent_code(int childpid)
-
{
-
int wait_rv;
-
wait_rv = wait(NULL);
-
printf("done waiting for %d. Wait returned:%d\n", childpid,
-
wait_rv);
-
}
Note: The line printf("before: mypid is %d\n", getpid()); has an error: implicit declaration of function 'int wait(...)'
Please advise.
Thanks.